为什么在回调中不起作用?

时间:2016-10-08 16:16:39

标签: javascript node.js mongodb mongoose

第一个函数(findOne)工作正常。但是所有Mongoose功能在这里回调只是没有任何错误。为什么? 谢谢!

var mongoose = require('mongoose');

var Links = require('../models/Links');

mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost:27017/soft');

Links.findOne({}, function(err, l) {
  if (err) throw err;
  console.log("1", l);
  Links.findOne({}, function(err, l_) {
    if (err) throw err;
    console.log("2", l_);
  });
});

mongoose.connection.close();

1 个答案:

答案 0 :(得分:2)

在第二个.find有机会被调用之前,代码正在关闭连接。由于.find是异步的,因此代码执行第一个调用(它具有执行的连接),但在第一个调用返回执行第二个调用之前继续并断开连接。

在第二次通话中移动.close通话将允许进行两次通话。

var Links = require('../models/Links');

mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost:27017/soft');

Links.findOne({}, function(err, l) {
  if (err) throw err;
  console.log("1", l);
  Links.findOne({}, function(err, l_) {
    if (err) throw err;
    console.log("2", l_);
    mongoose.connection.close();
  });
});