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});
});
});
我正在使用一个简单的查询来查找数据库中的值,当我 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});
});
});