あなたはPOJO JSON.stringifyの魔法はどのように動作しますか? sequelizeで
db.MyTable.findAll({}).function(response){
console.log(response);
}
を行う場合は、(もちろん、あなたのテーブルがどのように見えるかに応じて)このような出力が表示されます。
[ { dataValues:
{ id: 1,
text: 'sdf',
complete: false,
createdAt: Thu Jan 19 2017 11:55:38 GMT-0500 (Eastern Standard Time),
updatedAt: Thu Jan 19 2017 11:55:38 GMT-0500 (Eastern Standard Time) },
_previousDataValues:
{ id: 1,
text: 'sdf',
complete: false,
createdAt: Thu Jan 19 2017 11:55:38 GMT-0500 (Eastern Standard Time),
updatedAt: Thu Jan 19 2017 11:55:38 GMT-0500 (Eastern Standard Time) },
_changed: {},
'$modelOptions':
{ timestamps: true,
instanceMethods: {},
classMethods: {},
validate: {},
freezeTableName: false,
underscored: false,
underscoredAll: false,
paranoid: false,
rejectOnEmpty: false,
whereCollection: null,
schema: null,
schemaDelimiter: '',
defaultScope: {},
scopes: [],
hooks: {},
indexes: [],
name: [Object],
omitNul: false,
sequelize: [Object],
uniqueKeys: {},
hasPrimaryKeys: true },
'$options':
{ isNewRecord: false,
'$schema': null,
'$schemaDelimiter': '',
raw: true,
attributes: [Object] },
hasPrimaryKeys: true,
__eagerlyLoadedAssociations: [],
isNewRecord: false } ]
はそれは、言えば十分それにメタデータの束を持つ大きな複雑なオブジェクト。
しかし、あなたは試してみて、使用して文字列にその大きな複雑なオブジェクトを有効にした場合、次のいずれか
console.log(JSON.stringify(dbTodo));
または
res.json(dbTodo);
あなたが戻って実際のエンティティの情報だけを取得します(アイテム大きな複合オブジェクトのdataValuesプロパティに)。ここのテストテーブルでは、次のようになります。
[{
"id":1,
"text":"sdf",
"complete":false,
"createdAt":"2017-01-19T16:55:38.000Z",
"updatedAt":"2017-01-19T16:55:38.000Z"
}]
これは、かなり簡単です(私が望むだけです)。
この魔法はどのように起こりますか? JSON.stringify()の独自のバージョンを作成し、 'res.json'を表現し続けるのですか?
起こったときと起こらないときのルールは何ですか?
sequelizedocsを検索したところ、説明が見つかりませんでした。
偉大な答え!ありがとう。 –