2017-10-03 4 views
-1

SequelizeJS를 처음 사용합니다. 제 질문은 json에서 여러 모델의 결과를 저장하는 방법입니다. 두 모델 UsersFriends을 호출했으며 두 모델의 결과를 모두 JSON으로 가져 오려고합니다. return res.json({"OnlineUsers": onlineUsers, "onlineFriends": onlineFriends}); 두 결과 모두 단일 JSON으로 반환하려고하지만 결과를 얻지 못했습니다. 여기여러 모델을 저장하면 SequelizeJS의 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"}); 
}; 

과 같은 방법입니까?

답변

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

     }); 
    });; 
    } 
}; 
관련 문제