404未在错误| Node.JS上设置响应&;蒙哥达
我在编写Node.JS应用程序时遇到了一个问题。 我试图获取一个JSON字符串作为POST,并将该JSON保存到mongodb 插入工作正常,但我无法处理负责与mongodb交互的snippet中的错误场景 例如,在下面的代码片段中,当满足相应的条件时,我在server.js中的“Error”注释#1、3、4处收到预期的404响应,但注释#2处的404响应不会出现 然而,我在控制台中收到了来自insertintomongo.js注释#5和6的错误,并且该错误对象也成功地发送回server.js 即使我知道代码已经进入了正确的if状态(如控制台输出所示),我也无法理解为什么响应没有设置为404 JS处理请求的片段(server.JS) 这里是控制台输出404未在错误| Node.JS上设置响应&;蒙哥达,node.js,mongodb,Node.js,Mongodb,我在编写Node.JS应用程序时遇到了一个问题。 我试图获取一个JSON字符串作为POST,并将该JSON保存到mongodb 插入工作正常,但我无法处理负责与mongodb交互的snippet中的错误场景 例如,在下面的代码片段中,当满足相应的条件时,我在server.js中的“Error”注释#1、3、4处收到预期的404响应,但注释#2处的404响应不会出现 然而,我在控制台中收到了来自insertintomongo.js注释#5和6的错误,并且该错误对象也成功地发送回server.js
Server runing at 8081
POST to /ssd/add
// This is coming from inserttomongo.js
Error 5: Unable to connect to the mongoDB server. Error: { [MongoError: connect ECONNREFUSED 127.0.0.1:27018]
name: 'MongoError',
message: 'connect ECONNREFUSED 127.0.0.1:27018' }
// This is coming from server.js
Error 2: MongoError: connect ECONNREFUSED 127.0.0.1:27018
好的,解决了问题。我不得不从前面的位置删除这些行,并将其置于“错误2”注释的else条件下 这是因为对imongo的调用是异步的,并且在imongo完成之前就已经将响应设置为200 非常基本的错误:(
var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/mytest';
function saveToMongo(input,cb){
MongoClient.connect(url, function (err, db) {
if (err) {
// Error 5
console.log('Unable to connect to the mongoDB server. Error:', err);
cb(err);
} else {
var collection = db.collection('users');
collection.insert([input], function (err, result) {
if (err) {
// Error 6
cb(err);
} else {
console.log('Inserted '+ result.result.ok+ ' documents into collection. The documents inserted with "_id" are:' + JSON.stringify(result.ops));
cb(null);
}
db.close();
});
}
});
};
module.exports=saveToMongo;
Server runing at 8081
POST to /ssd/add
// This is coming from inserttomongo.js
Error 5: Unable to connect to the mongoDB server. Error: { [MongoError: connect ECONNREFUSED 127.0.0.1:27018]
name: 'MongoError',
message: 'connect ECONNREFUSED 127.0.0.1:27018' }
// This is coming from server.js
Error 2: MongoError: connect ECONNREFUSED 127.0.0.1:27018
// OK 1
response.writeHead(200, "OK", {'Content-Type': 'text/html'});
response.end();