Sails.js - 尝试显示模型数据时出现问题

时间:2013-08-14 14:05:14

标签: javascript node.js sails.js

我从数据库中检索所有模型并使用以下代码在页面上显示它没有问题:

index: function(req, res) {
    Applicant.find(function(err, applicants) {
        if (err) {
            return console.log(err);
        }else{
            res.view({
                apps: applicants
            });
        }
    });
} 

但是,如果我尝试仅拉出一个模型并显示它,我的浏览器就会卡在加载上。这是我用来拉动一个模型的代码:

display: function(req, res) {
    Applicant.find().where({id: 2}).done(function(err, appl) {
        if (err) {
            return console.log('HAI');
        }else{
            res.view({
                applicant: appl
            });
        }
    });
}

2 个答案:

答案 0 :(得分:3)

可能您的浏览器卡住了,因为当您尝试查找申请人时发生错误,并且您的代码在这种情况下不会返回任何响应。因此浏览器会永远等待响应。 请尝试这样的事情

if (err) {
    console.log('HAI');
    return res.send(err, 500);
}

P.S。顺便说一句,从Sails v0.9开始,即使只找到一条记录,find()方法也会返回一个数组。如果您只想按ID查找一条记录,并希望在视图中使用单个对象,则可以使用findOne()方法。

答案 1 :(得分:1)

.find()返回一个数组。您可能期待一个applicant对象。

使用appl[0]可以解决这个问题。请注意,Sails'Waterline ORM为这些情况提供了.findOne()。这是.findOne()

上的more info
display: function(req, res) {
    Applicant.find().where({id: 2}).done(function(err, appl) {
        if (err) {
            return console.log('HAI');
        }else{
            res.view({
                applicant: appl[0]
            });
        }
    });
}

或者更好......

display: function(req, res) {
    Applicant.findOne({id: 2}, function(err, appl) {
        if (err) {
            return console.log('HAI');
        }else{
            res.view({
                applicant: appl
            });
        }
    });
}