【发布时间】:2017-10-17 15:25:49
【问题描述】:
所以我正在尝试更新我的代码并将其展示给用户。基本上它能够做我需要做的事情,但是在执行之后我得到了这个错误
C:\Users\tester01_2\myproject\node_modules\mongodb-core\lib\cursor.js:174 抛出错误; ^ 错误:发送后无法设置标头。 在 ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:357:11) 在 ServerResponse.header ( C:\Users\tester01_2\myproject\node_modules\express\lib\response.js:725:10) 在 ServerResponse.send (C:\Users\tester01_2\myproject\node_modules\express\lib\response.js:170:12) 在 C:\Users\tester01_2\myproject\dbUpdate.js:13:14 在 C:\Users\tester01_2\myproject\dbUpdate.js:28:5 在 handleCallback (C:\Users\tester01_2\myproject\node_modules\mongodb- 核心\lib\cursor.js:171:5) 在 nextFunction (C:\Users\tester01_2\myproject\node_modules\mongodb- 核心\lib\cursor.js:682:5) 在 Cursor.next [as _next] (C:\Users\tester01_2\myproject\node_modules\mongodb- 核心\lib\cursor.js:692:3) 在循环 (C:\Users\tester01_2\myproject\node_modules\mongodb\lib\cursor.js:694:8) 在每一个 (C:\Users\tester01_2\myproject\node_modules\mongodb\lib\cursor.js:741:16)
这是我的代码
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var url = 'mongodb://localhost:27017/myproject';
module.exports = {
postCollection : function(req, res){
var issueQty = req.body.issueQty;
var itemDescrip = req.body.itemDescrip;
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
updateRecord(db, req, function(doc) {
return res.send('Record Found. Now updating this document...' +
itemDescrip + ' Record Updated. This is the new record ' + doc )
res.end();
db.close();
});
});
}
}
var updateRecord = function(db, req, callback) {
var cursor = db.collection('documents').find({'Item Description':
req.body.itemDescrip, 'Issued QTY': req.body.issueQty})
cursor.each(function(err,doc){
assert.equal(err, null);
if(doc != err){
console.log('Successfully queried');
console.log(doc);
callback(JSON.stringify(doc));
} else{
throw err;
}
});
db.collection('documents').updateMany(
{ 'Item Description': req.body.itemDescrip},
{
$set: { 'Issued QTY': req.body.issueQty }
},function(err, results) {
console.log(results);
console.log('Done');
console.log(results);
});
};
我认为这与我的 res 有关,因为我看到的所有线程都处于错误位置,但我需要将我的 res.send 放在那里,以便它可以使用 doc。有没有办法解决这个问题?谢谢。
【问题讨论】: