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的新手,所以我很好奇最好的做法是在这里进行确认,或者可能是一个简单的指出我做错了什么。
感谢您的帮助。
我等不及去办公室,并尝试了这一点! –