我想通過nodejs腳本填充一些僞造數據的mongodb實例,並且我想在for循環完成時調用mongoose.disconnect()以便程序不會由於貓鼬的情況,繼續循環。mongoose斷開for循環在nodejs中結束
問題是,因爲nodejs在當前代碼中是非阻塞的,所以它調用for循環,然後繼續並退出。 我已經嘗試了一些與異步庫,但不能弄清楚我是如何使這項工作。
在節點中這樣做的正確方法是什麼?
'use strict';
var mongoose = require('mongoose'),
promise = require('promise');
mongoose.Promise = promise;
var uri = 'mongodb://localhost:27017/test'
var test1Schema = new mongoose.Schema({
name: String,
type: String
});
var test2Schema = new mongoose.Schema({
name: String,
type: String
});
var test3Schema = new mongoose.Schema({
name: String,
type: String
});
var test1 = mongoose.model('test1', test1Schema);
var test2 = mongoose.model('test2', test2Schema);
var test3 = mongoose.model('test3', test3Schema);
function genRandom (high, low) {
return Math.floor(Math.random() * (high - low) + low);
}
mongoose.connect(uri);
var _connection = mongoose.connection;
_connection.on('error', function (err) {
console.log('Couldn\'t connect to the database %s - %s', uri, err);
});
_connection.on('open', function() {
console.log('Connection open - ', uri);
});
_connection.on('close', function() {
console.log('Closed mongoose connection');
});
var saveCallback = function (err) {
if (err) {
console.log('An error occured while saving %s', err);
}
}
function genRecords (callback) {
for (var i=0; i <= 5; i++) {
new test1({
name: 'test_' + i.toString(),
type: genRandom(123, 321).toString()
}).save(callback);
new test2({
name: 'test_' + i.toString(),
type: genRandom(456, 654).toString()
}).save(callback);
new test3({
name: 'test_' + i.toString(),
type: genRandom(789, 987).toString()
}).save(callback);
}
}
genRecords(saveCallback)
mongoose.disconnect();
輸出:
Connection open - mongodb://localhost:27017/test
Closed mongoose connection
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed
An error occured while saving MongoError: server localhost:27017 sockets closed