我是 SequelizeJS 的新手。我的问题是如何将多个模型的结果存储在 json 中。我已经调用了 2 个模型 Users
和 Friends
,我想在 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/