如何在Sequelize中以JSON的forms返回数据

当我做一个Sequelize查询它返回给我一个对象(或数组),我猜是一个Sequelize模型(或模型数组(集合types??)),但没有logging任何地方,所以我只是猜测。 我总是喜欢结果是JSON。 有什么我可以通过查询来强制这个? 如果可能的话,我宁愿不手动按摩每一个结果我回到JSON。

文档显示这个返回一个string:

console.log(JSON.stringify(users)) 

所以有一些内置的序列化。 现在我正在使用未toJSON()方法执行此操作:

 query().then(function(result) { if(result.length) { return result.toJSON(); } else { return result.map(function(item) { return item.toJSON(); }); } }); 

这很麻烦。

您可以在查询中使用raw: true ,但是这并不总是像您期望的那样运行,尤其是在关联中。

 query({ // ... raw: true }).then(function(result) { // Result is JSON! }); 

但是,在使用关联的情况下,您可能会得到如下所示的结果:

 { foo: true, "associated.bar": true } 

而不是你可能期望的:

 { foo: true, associated: { bar: true } } 

当您从数据库检索模型时,可以对结果调用.get({ plain: true}) ,它将为您处理转换。 您可以将函数调用的值分配给一个variables。 例如

..).then(function(user){ var _user = user.get({ plain: true}); console.log(_user); //Should be valid json object });

希望这可以帮助。

如果你正在做一个有多个结果的查询,你应该会返回一个数组。 你会发现结果数组中的每个元素都是一个JSON对象。

你应该能够像这样访问给定的字段: result[0].myfieldname