如何在Sequelize中以JSON形式返回数据

时间:2015-04-25 18:48:32

标签: node.js postgresql sequelize.js

当我创建一个Sequelize查询时,它返回给我一个对象(或数组),我猜测它是一个Sequelize模型(或模型数组(一个集合类型??))但它没有在任何地方记录,所以我'我只是在猜测。我总是希望结果是JSON。我可以在查询中传递任何强制执行此操作的内容吗?如果可能的话,我宁愿不按摩每一个结果我都会回到JSON。

The documentation显示此命令返回一个字符串:

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();
        });
    }
});

这很麻烦。

3 个答案:

答案 0 :(得分:8)

您可以在查询中使用<div id="map"></div> <div id="results"></div> <script src="https://maps.googleapis.com/maps/api/js?v=3"></script>,但这并不总是像您预期的那样,特别是在关联时。

raw: true

但是,在您使用关联的情况下,您可能会得到以下内容:

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

而不是你所期望的:

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

答案 1 :(得分:8)

从数据库中检索模型时,可以在结果上调用.get({ plain: true}),它将为您处理转换。您可以将函数调用的值赋给变量。例如

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

希望这有帮助。

答案 2 :(得分:3)

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

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