非阻塞以JSON格式写入Mongo的响应

时间:2016-03-23 16:02:36

标签: javascript json node.js mongodb express

我正在使用Node / Express.js,以便GET路由将从Mongo数据库中检索所有文档(足够简单)。正如代码所示,我能够以非阻塞的方式完成此任务。但是,当我取消注释将响应设置为JSON格式的行时,我收到语法错误 - 因为虽然每个文档都是JSON格式,但文档的聚合不是JSON格式。如何保留非阻塞数据流,但将其作为application/json

发送

我在GET路由下面以及我用来从mongo数据库中获取项目的函数。

获取路线:

app.get('/people', function(req, res){
    //res.set('Content-Type', 'application/json');
    mongoDriver.get(null, function(err, code, document){
        res.status(code);
        if(err) {
            res.write(JSON.stringify(err));
        } else if(document){
            res.write(JSON.stringify(document));
        }
        if(!document){
            res.end();
        }
    });
});

我的mongo实现的相关部分。

var cursor = db.collection(self.collection).find(data);
        cursor.each(function(err, doc) {
            if(err) {
                return callback(err, 500);
            } else if (doc !== null) {
                return callback(null, 200, doc);
            } else {
                db.close();
                return callback(null, 200, null);
            }
    });

1 个答案:

答案 0 :(得分:1)

使用mongodb NPM包中的tutorialres.json(...)

// ...

findDocuments(db, function(docs) {
    db.close();
    res.json(docs);
});

// ...