当MongoDB非空时,NodeJS站点会遇到服务器错误

时间:2016-03-09 05:37:19

标签: javascript node.js mongodb mongoose

我使用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查询的结果集为空时看到的示例。

Empty Array

这是一个例子,说明一旦我添加了一些值,会发生什么。

enter image description here

与此同时,Chrome会在发生这种情况时挂断大约3秒钟,然后显示ERR_CONNECTION_REFUSED消息。此外,在提示时按任意键只会关闭终端选项卡。

任何帮助?

1 个答案:

答案 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;干杯