404未在错误| Node.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

我在编写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

这里是控制台输出

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();