发送2个数组以在sailjs中查看

时间:2016-10-26 01:24:35

标签: javascript sails.js

我是sails.js的新手,当我试图通过制作一个简单的网络应用程序来学习它时,我遇到了一个问题。我的应用程序是关于班级管理。我的模型有3个表:学生,课程和列表。学生表保存有关学生的信息,课程保存有关课程的信息。 list.table保存有关哪个学生在课程中的信息及其标记,以及他们在本课程中缺席的日期。我使用res.view(),它适用于任何需要一个数组的视图。但是,当我尝试编写需要来自2个模型的信息的函数:学生和课程时,res.view()没有帮助(或者我不知道要正确地做到)

module.exports = {
   'new': function(req, res, next) {
   Course.find(function foundCourses (err, courses) {
     if (err) return next(err);
     res.view({courses: courses});
   });
   /* Student.find(function foundStudents (err, students) {
     if (err) return next(err);
     res.view({
       students: students
     });
   }); */
   },
   //more other code here
};

在那里,我想发送两个数组进行查看,但我不知道如何。如果我喜欢的话,Sails.js只允许我发送一个数组。请帮我 。非常感谢你!

1 个答案:

答案 0 :(得分:0)

您无法两次致电res.view。您需要先收集所有数据,然后将其发送给查看。

2种方法:

module.exports = {
    'new': function(req, res, next) {
         var foundCourses = function (err, courses) {
             if (err) return next(err);
             Student.find(function foundStudents (err, students) {
                 if (err) return next(err);
                 res.view({
                     courses: courses,
                     students: students
                 });
             });
         });

         Course.find(foundCourses);
    },
    //more other code here
};

或者您可以使用async.parallel

module.exports = {
    'new': function(req, res, next) {
        var dataCallback = function (err, data) {
            if (err) return next(err);
            var courses = data[0];
            var students = data[1];
            res.view({
                courses: courses,
                students: students
            });
        };

        async.parallel([
            function(callback) {
                Course.find(callback);
            },
            function(callback) {
                Student.find(callback);
            }
        ],dataCallback);
    },
};