我使用Node.js与MongoDB和Mongoose进行数据库连接。会发生什么,如果数据库中没有值,那么回调函数会使后续页面显示正常(尽管当然没有显示模板期望看到的值的任何内容),但是如果它们是值,那么我面临着在命令行中使用Press any key to continue...
。
以下是处理对应显示集合中所有值的页面的请求的路由
// GET request for the Blog page.
exports.g_blog = function (req, res) {
var image = req.Image;
image.find(function (err, docs) {
if (err) return console.error(err);
console.log(docs); // Prints the value we save initially
res.render('blog', {
title : 'Blog',
images: docs
});
});
};
在上面的代码中,Image
是模式文件中定义的模型的实例。
该定义如下
var ImageSchema = new Schema({
path : String
});
var Image = mongoose.model('Image', ImageSchema);
因此,在image.find
请求中调用GET
应该返回集合中的所有值,这些值存储在变量docs
我已经确认它通过console.log(docs)
函数调用在代码中达到了这一点,其中显示了空数组或填充数组。在填充数组的情况下,我遇到了上述消息。在空数组中,输出以下GET请求信息。
以下是我在DB查询的结果集为空时看到的示例。
这是一个例子,说明一旦我添加了一些值,会发生什么。
与此同时,Chrome会在发生这种情况时挂断大约3秒钟,然后显示ERR_CONNECTION_REFUSED
消息。此外,在提示时按任意键只会关闭终端选项卡。
任何帮助?
答案 0 :(得分:0)
< ================== Mongodb模型代码======================= ====>
var mongoose = require('mongoose');
var ImageSchema = new mongoose.Schema({
path : String
});
module.exports = mongoose.model('Image', ImageSchema );
< =============路由+功能代码(image.js文件)===============>
var imageModel = require(../pathTo/yourModel.js);
module exports = (function () {
var ImageApi= express.Router();
image.find(function (err, docs) {
if (err) {
console.error(err);
}
else{
console.log(docs); // Prints the value we save initially
if(docs.length <=0){
console.log("No records found");
res.render('blog', {
title : 'Blog',
images: "No Records Found"
});
}else{
res.render('blog', {
title : 'Blog',
images: docs
});
}
}
});
return ImageApi;
})();
&lt; ================== App.js文件的代码===================== ======&GT;
var imageApi = = require('./routes/image.js');
app.use('/image', imageApi);
我认为现在它应该被清除...在这里路由你必须根据你的文件名和功能进行更改
谢谢&amp;干杯