3

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

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

2 回答 2

3

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

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

PS 顺便说一句,从 Sails v0.9find()开始,即使只找到一条记录,方法也将始终返回一个数组。如果您只想通过 id 查找一条记录,并且希望视图中有单个对象,则可以使用findOne()method.

于 2013-08-14T14:56:13.437 回答
1

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

使用appl[0]可以解决这个问题。请注意,Sails 的Waterline ORM 提供.findOne()了诸如此类的情况。这里有更多信息.findOne()

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
            });
        }
    });
}
于 2013-08-14T20:32:06.180 回答