【发布时间】:2017-06-27 19:28:17
【问题描述】:
我正在尝试使用 node.js 将多个文档插入到我的数据库中,但我遇到了一个错误: MongoError:应用程序关闭了连接 有什么选项可以并行插入多个文档?
这是我的代码:
var MongoClient = require('mongodb').MongoClient;
var dbName = "tst1";
var port = "27017";
var requiredCollection = "stocks"
var host = "localhost";
// open the connection the DB server
MongoClient.connect("mongodb://" + host + ":" + port + "/" + dbName, function (error, db){
console.log("Connection is opened to : " + "mongodb://" + host + ":" + port + "/" + dbName);
if(error) throw error;
var ibm = {'_id' : 1, 'value' : 1, 'ticker' : 'IBM'};
db.collection(requiredCollection).insert(ibm, function(error, inserted) {
if(error) {
console.error(error);
}
else {
console.log("Successfully inserted: " , inserted );
}
}); // end of insert
var apple = {'_id' : 2, 'vlue' : 1, 'ticker' : 'AAPL'};
db.collection(requiredCollection).insert(apple, function(error, inserted) {
if(error) {
console.error(error);
}
else {
console.log("Successfully inserted: " , inserted );
}
}); // end of insert
var intel = {'_id' : 3, 'value' : 1, 'ticker' : 'INTC'};
db.collection(requiredCollection).insert(intel, function(error, inserted) {
if(error) {
console.error(error);
}
else {
console.log("Successfully inserted: " , inserted );
}
}); // end of insert
var f5 = {'_id' : 4, 'value' : 1, 'ticker' : 'FFIV'};
db.collection(requiredCollection).insert(f5, function(error, inserted) {
if(error) {
console.error(error);
}
else {
console.log("Successfully inserted: " , inserted );
}
}); // end of insert
var arris = {'_id' : 5, 'value' : 1, 'ticker' : 'ARRS'};
db.collection(requiredCollection).insert(arris, function(error, inserted) {
if(error) {
console.error(error);
}
else {
console.log("Successfully inserted: " , inserted );
}
}); // end of insert
db.close();
}); // Connection to the DB
【问题讨论】:
-
您需要阅读“异步”代码。在所有其他操作完成之前调用
.close()。这些操作不一定按顺序“完成”。查看"async" 作为节点库,了解如何按照您的意图在“系列”中清楚地执行此操作。不过一般来说,您几乎从不真的想明确地关闭数据库连接,除非您真的完成了。 -
你能给我一些代码示例吗?
标签: javascript node.js mongodb mongoose mongodb-query