2
在Node.js的,我有(簡述)這個腳本:的Node.js + MongoDB的更新操作確認
var http = require('http');
var XmlStream = require('xml-stream');
var mongo = require('mongodb');
var tims = { ... };
var db = new mongo.Db('tims', new mongo.Server("127.0.0.1", 27017, {}), {w: 1});
db.open(function(e, db) {
var req = http.get({
host: tims.uri,
path: '/xml/'+tims.database+tims.services.database
}).on('response', function(res) {
res.setEncoding('utf8');
cProjects = db.collection("projects");
var xml = new XmlStream(res);
xml.on('updateElement: Tims ProjectID', function(project) {
// console.log(project.$text+' - '+project.$.title);
cProjects.update({project_id: project.$text}, {project_id: project.$text, title: project.$.title}, {upsert:true}, function(err, result) {
console.log('result: '+result);
});
});
xml.on('end', function(data) {
db.close();
});
});
});
我使用的是Node.js的包叫做xml-stream是拼湊從節點響應塊獲得處理前有效的XML。我的問題:如果我離開了
xml.on('end', function(data) {
db.close();
});
我的連接從不關閉,控制檯掛起。好處是,console.log('result: '+result);
寫入控制檯,我可以看到我的數據成功提交。因此,如果我在end
事件中離開,並且在處理完所有XML後關閉數據庫,則在編寫console.log('result: '+result)
之前終止節點實例。
我是MongoDB和Node.js的新手,所以我很好奇最好的做法是在這裏進行確認,或者可能是一個簡單的指出我做錯了什麼。
感謝您的幫助。
我等不及去辦公室,並嘗試了這一點! –