【发布时间】:2014-10-10 04:59:51
【问题描述】:
我正在编写一个 node.js 脚本来将一些来自 MySQL 数据库的数据写入 MongoDB 数据库。它不是一个网络应用程序,而是一个本地脚本(我的 MySQL 和 Mongo 都是本地的)。
问题是当所有数据都写入后,脚本并没有终止。我必须用 CTRL+C 关闭它。但是我所有的数据都写在我的 MongoDB 数据库中。
我在 MongoDB 中编写后调用的回调末尾添加了一个“process.exit()”行。应用程序终止,但没有写入数据!我不明白为什么。
这是相关的代码部分
(...)
var req = "SELECT * FROM geometry";
// "connection" is a MySQL connection
connection.query(req, function(err, rows, fields) {
console.log("number of lines :" + rows.length);
connection.end();
if (err) {
throw err;
}
// "Entry" is my model
for (var i = 0; i < rows.length; i++) {
Entry.create({
"code" : rows[i].code,
"name" : rows[i].name,
"coords" : rows[i].coords,
"type" : rows[i].type
}, function(err, doc){
if (err) {
throw (err);
}
});
}
console.log("end");
process.exit(); // no data written ! why ?
});
你能帮帮我吗? 提前致谢。
【问题讨论】:
-
看来你不习惯异步思考。试着阅读这个问题和答案,看看你是否明白你在你的案例中是如何犯同样的错误的:stackoverflow.com/questions/23667086/…
-
感谢您的回答,您的链接在我的大脑中点亮了灯 :)
标签: node.js mongodb asynchronous mongoose