2017-10-03 1 views
-1

Ich bin neu in SequelizeJS. Meine Frage ist, wie speichern mehrere Modelle in json Ergebnis. Ich habe 2 Modelle Users und Friends genannt, und ich möchte beide Ergebnisse des Modells in JSON erhalten. Ich versuche, return res.json({"OnlineUsers": onlineUsers, "onlineFriends": onlineFriends}); beide Ergebnis in einem einzigen JSON, aber nicht Ergebnis zu erhalten.Speichern mehrerer Modelle Ergebnis in JSON in SequelizeJS

Hier ist, wie mein Controller wie

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

jemand kann mir helfen oder mich zu leiten, dies zu erreichen?

Antwort

1

Sie müssen die Abfragen verschachteln, denken Sie daran, dass node.js asynchron ist, also führen Sie nach der ersten Abfrage die zweite aus, und danach geben Sie die Antwort mit beiden Objekten zurück. Etwas wie dieses:

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

     }); 
    });; 
    } 
};