【发布时间】:2019-02-14 13:06:27
【问题描述】:
var mongoose = require('mongoose');
var mongoDB = "mongodb://jananton:password1@ds020168.mlab.com:20168/test_database";
var User = require('./models/User.js');
var async = require('async');
function establishConnection() {
mongoose.connect(mongoDB, {
useNewUrlParser: true
}).then(
() => {
console.log("Connection successful")
},
(err) => {
console.log("Warning!" + err)
}
);
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
}
let users = [];
function createUser(user_name, user_status, user_position) {
var newUser = new User({
Name: user_name,
_id: new mongoose.Types.ObjectId(),
Status: user_status,
Position: user_position
});
newUser.save((err) => {
if (err) {
console.log(err);
}
});
console.log(newUser.Name);
users.push(newUser);
};
//Call both functions, starting with establishConnection
async.series([
establishConnection,
createUser("Andy", "Administrator", "Whatever"),
],
function(err, res) {
mongoose.connection.close();
})
在上面的代码中,我只是通过建立连接() 方法连接到托管在 mLab 上的 MongoDB 数据库。第二个函数 createUser 创建一个文档并将其保存到数据库中。然后从 async.series() 函数内部调用这两个函数,控制台输出为
Andy
Connection successful
我不明白为什么首先输出Andy,然后才记录连接成功,因为建立连接()在createUser()之前。此外,猫鼬不会关闭连接(请参阅 async.series 函数的回调函数)。谁能解释一下为什么?
【问题讨论】:
标签: javascript mongodb asynchronous mongoose