我正在尝试从Node.js文件中获取MongoDB中的数据 .
我收到这个错误:
/home/jay/node_project/user_data_manag/node_modules/mongodb/lib/utils.js:98 process.nextTick(function(){throw err;});错误:发送后无法设置标头 . ServerResponse.jader上的ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:335:11)处的ServerResponse.header(/home/jay/node_project/user_data_manag/node_modules/express/lib/response.js:719:10) /jay/node_project/user_data_manag/node_modules/express/lib/response.js:247:10)在ServerResponse.send(/home/jay/node_project/user_data_manag/node_modules/express/lib/response.js:152:21)at at /home/jay/node_project/user_data_manag/routes/api.js:42:13 attome/jay/node_project/user_data_manag/node_modules/mongodb/lib/cursor.js:777:7 at handleCallback(/ home / jay / node_project /user_data_manag/node_modules/mongodb/lib/utils.js:96:12)在handleCallback的/home/jay/node_project/user_data_manag/node_modules/mongodb/lib/cursor.js:741:16(/ home / jay / node_project / user_data_manag / node_modules / mongodb / lib / utils.js:96:12)/home/jay/node_project/user_data_manag/node_modules/mongodb/lib/cursor.js:675:5
// Dependencies
var express = require('express');
var router = express.Router();
var mongo = require('mongodb').MongoClient;
var objectId = require('mongodb').ObjectID;
var assert = require('assert');
var url = 'mongodb://localhost/rest_test';
router.post('/user', function(req, res, next) {
if (req.body.name == "Login") {
var result = [];
mongo.connect(url, function(err, db) {
var data = db.collection('products').find();
data.forEach(function(doc, err) {
result.push(doc);
}, function() {
db.close();
res.send({
iteamd: result
});
});
});
} else {
res.send("data");
}
res.end();
});
//insert data
router.post('/put-data', function(req, res, next) {
var item = {
title: req.body.name,
content: req.body.sku,
author: req.body.price
};
var data = req.body.name;
mongo.connect(url, function(err, db) {
var cursor = db.collection('products').find({
"name": data
});
res.send(cursor.toString);
});
});
// Return router
module.exports = router;
2 回答
不要在同一个请求处理程序中调用
res.send()
和res.end()
.res.send()
将为您调用res.end()
(source) .res.end()
通常在调用多个res.write()
后使用 .如果多次调用/ user POST 且POST n 在 n+1 POST之前没有关闭与 db.close(); 的连接,则可能会出现相同的错误 .
刚刚解决了我的脚本 .