Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sails.js-尝试显示模型数据时出现问题_Javascript_Node.js_Sails.js - Fatal编程技术网

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

Javascript Sails.js-尝试显示模型数据时出现问题,javascript,node.js,sails.js,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 });

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

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

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

if (err) {
    console.log('HAI');
    return res.send(err, 500);
}
顺便说一下,从Sails v0.9开始,
find()
方法将始终返回一个数组,即使只找到一条记录。如果您只想按id查找一条记录,并且希望视图中只有一个对象,则可以使用
findOne()
方法。

.find()
返回一个数组。您可能需要一个
申请人
对象

使用
appl[0]
可以解决这个问题。请注意,Sails的ORM为此类情况提供了
.findOne()
。下面是关于
.findOne()

或者更好的是

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

谢谢你的回答!我已经查看了框架的文档(迁移部分),我读到findOne方法是不推荐的dbtw,因为我正处于Sails.js旅程的开始阶段,您是否知道任何对学习有用的额外资源?除了文件之外。非常感谢。引用指南:影响代码库的主要变化之一是远离
findAll
。从0.9开始,我们采用了类似MongoDB的语法,并将方法替换为
findOne
find
。不幸的是,我不知道与Sails.js相关的任何额外资源。这是一个非常年轻的项目。如果我误解了什么,我会查看github上sails的源代码。另外,Stackoverflow是提问的好地方,因为Sails的贡献者经常在这里回答。你是对的,但是这个解决方案并不能解决问题,如问题中所述。如果出现任何
错误
,浏览器将在等待响应时卡住。因此,您应该在
if(err)
案例中提供一些响应。很好的答案-确保始终处理您的错误!这看起来像:display:function(req,res,next){applicator.findOne(2).exec(function(err,applicator){//如果(err)返回next(err),则使用config/500.js中的默认错误处理程序;//如果(!applicator)返回res,则重定向到主页;//否则显示HTML页面return res.view({applicator:applicator});});}
display: function(req, res) {
    Applicant.findOne({id: 2}, function(err, appl) {
        if (err) {
            return console.log('HAI');
        }else{
            res.view({
                applicant: appl
            });
        }
    });
}