Express 'res.render' Error: Rendering page multiple times

Express 'res.render' Error: Rendering page multiple times

我正在使用一个简单的查询来查找数据库中的值,当我 return 到一个页面时,它会使用检索到的对象正确地呈现该页面一次,然后使用 null 再次呈现它对象(none 被发现),console.log 文件被 运行 两次,一次有正确的数据,一次没有。这是快递的问题吗?

 app.get('/user/:userid',isLoggedIn, function(req, res){
        var newmodel;
        mongoose.model('studentusers').find({ "userid" : req.params.userid }, function(err, docs){ //search for specific object that matches parameters
             console.log("DOCS: " + docs); //Check to see if the query worked
             //Here I just do some formatting on the object to be able to 
             var model = docs;
             model = JSON.stringify(model);
             model = model.replace("[", "");
             model = model.replace("]", "");
             console.log("model: " + model);//check to see if model is correct
             newmodel = JSON.parse(model);

            //The res.render returns the page once with the 'DOCS:' and 'model:' console.log files outputting the json info, and then again with nothing afterwards
             res.render('user.ejs',
                {
                    student: newmodel,
                });        
        });         
    });

然后在我看到 'DOCS:' 和 'model:' 的正确输出后,它再次显示 'DOCS:' 和 'model:',除了空的,我得到这个错误:

undefined:0

^
SyntaxError: Unexpected end of input
at Object.parse (native)
at Promise.<anonymous> 

您不需要任何将 docs 对象转换为 newmodel 对象的代码。这都是无关紧要的,因为 find returns 是一个数组。如果您将 mongoose 调用转换为使用 findOne 方法,您应该能够做到这一点:

app.get('/user/:userid',isLoggedIn, function(req, res){
    mongoose.model('studentusers').findOne({userid: req.params.userid }, function(err, user){ 
        res.render('user.ejs', {student: user});        
    });         
});