json - 在 SequelizeJS 中以 JSON 格式存储多个模型

标签 json node.js sequelize.js

我是 SequelizeJS 的新手。我的问题是如何将多个模型的结果存储在 json 中。我已经调用了 2 个模型 UsersFriends,我想在 JSON 中获得两个模型的结果。我试图将 return res.json({"OnlineUsers": onlineUsers, "onlineFriends": onlineFriends}); 都返回到一个 JSON 中,但没有得到结果。

这是我的 Controller 的样子

'use strict';

var models = require('../models');
var Sequelize = require('sequelize');

exports.search = function (req, res) {
    if (req.body.searchType === "OnlineUsers") {
        var user = new models.Users();
        var onlineUsers = user.onlineUsers();
        var attributes = {"id": '', "username": "", "role": ""};
        var onlineUsers = models.Users.findAll({
            attributes: Object.keys(attributes).concat([
                [Sequelize.literal("IF(Users.lastSeen < DATE_SUB(NOW(), INTERVAL 15 MINUTE), 0, 1)"), 'isSeen'],
            ]),
        }).then(onlineUsers => {
            return onlineUsers;
        });;
        var onlineFriends = models.Friends.findAll({
            attributes: Object.keys(attributes).concat([
                [Sequelize.literal("IF(Users.lastSeen < DATE_SUB(NOW(), INTERVAL 15 MINUTE), 0, 1)"), 'isSeen'],
            ]),
        }).then(onlineFriends => {
            return onlineFriends;
        });
        return res.json({"OnlineUsers": onlineUsers, "onlineUsers": onlineFriends});
    }
    //return res.json({searchResult: "test"});
};

任何人都可以帮助我或指导我实现这一目标吗?

最佳答案

您必须嵌套查询,请记住 node.js 是异步的,因此在执行第一个查询后执行第二个查询,然后返回两个对象的响应。像这样的东西:

exports.search = function (req, res) {
  if (req.body.searchType === "OnlineUsers") {
    var user = new models.Users();
    var onlineUsers = user.onlineUsers();
    var attributes = {"id": '', "username": "", "role": ""};
    models.Users.findAll({
        attributes: Object.keys(attributes).concat([
            [Sequelize.literal("IF(Users.lastSeen < DATE_SUB(NOW(), INTERVAL 15 MINUTE), 0, 1)"), 'isSeen'],
        ]),
    }).then(onlineUsers => {
        return models.Friends.findAll({
            attributes: Object.keys(attributes).concat([
                [Sequelize.literal("IF(Users.lastSeen < DATE_SUB(NOW(), INTERVAL 15 MINUTE), 0, 1)"), 'isSeen'],
            ]),
        }).then(onlineFriends => {
            res.json({"OnlineUsers": onlineUsers, "onlineFriends": onlineFriends});

        });
    });;   
  }
};

关于json - 在 SequelizeJS 中以 JSON 格式存储多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46546933/

相关文章:

javascript - Socket.io 客户端由于 ping 超时/传输关闭而断开连接

javascript - async.parallel 与 async wait - Node.js

javascript - 重命名 node.js Sequelize 时间戳列

javascript - 在使用 Sequelize 钩子(Hook)运行之前修改选择查询

JSON - 格式化最佳实践

ios - 从 JSON 中获取递归的 NSDictionaries 和 NSArray

javascript - Node 奇怪的用户输入异步行为

node.js - Sequelize 未能更新 SQL Server 中的日期时间数据类型

asp.net - 如何将 JSON 注入(inject)我的 .aspx 文件?

java - 如何将已解析的 JSON 的 Java 列表解析为 Big JSON?