2017-10-03 4 views
-1

SequelizeJSの新機能です。私の質問は、jsonに複数モデルの結果を格納する方法です。私は2つのモデルUsersFriendsを呼び出しました。両方のモデルの結果をJSONで取得したいと思います。私はreturn res.json({"OnlineUsers": onlineUsers, "onlineFriends": onlineFriends});を返すことを試みていますが、結果は単一のJSONになりますが、結果は得られません。ここで複数のモデルを格納するとJSONがSequelizeJSになります

は私のコントローラは、誰も私を助けたり、これを達成するために私を導くことができる

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

どのように見えるかですか?

答えて

1

あなたは巣にクエリを持って、Node.jsのは2番目のいずれかの操作を行います最初のクエリを実行した後ので非同期であり、その後、あなたが両方のオブジェクトで応答を返すことを覚えておいてください。このようなもの:

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

     }); 
    });; 
    } 
}; 
関連する問題