【问题标题】:Storing multiple Models result in JSON in SequelizeJS在 SequelizeJS 中存储多个模型导致 JSON
【发布时间】:2018-03-14 18:56:06
【问题描述】:

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

这是我的控制器的样子

'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"});
};

谁能帮助我或指导我实现这一目标?

【问题讨论】:

    标签: json node.js sequelize.js


    【解决方案1】:

    您必须嵌套查询,记住 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});
    
            });
        });;   
      }
    };
    

    【讨论】:

      猜你喜欢
      • 2021-05-22
      • 2016-07-13
      • 1970-01-01
      • 2017-06-07
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 2017-09-07
      • 2021-10-25
      相关资源
      最近更新 更多