【发布时间】:2014-08-11 13:38:29
【问题描述】:
我正在使用 Node.js 请求库和 node-feedparser 来捕获提要,并使用 Mongoose 将其发布到 MongoDB 数据库中。
我将帖子信息存储到帖子集合中,并将提要信息存储到提要集合中,但我需要将 post._id 存储在提要集合中名为 feeds._post 的数组中。
我遇到的问题是使用流接口,在所有 feedparser.on('可读') 对数据库的异步调用完成之前调用 feedparser.on('end'),因此我最终在 Post 集合中有 15 个帖子,而 Feed._post 数组中只有 11 个 post._id。
我知道如果这只是简单的 JavaScript,我可以使用异步来确保 .on('end') 等待所有 .on('ready') 完成,但我该怎么做这与流有关?
提前致谢。
db.Feed.findById(feedid, function(error, feed) {
// request.on('response') -> this.pipe(feedparser)
feedparser.on('readable', function() {
var post;
while (null !== (post = this.read())) {
db.Post.create({ /* post details */ }, function(err, post) {
feed._post.push(post);
});
}
});
feedparser.on('end', function() {
feed.save();
});
});
【问题讨论】:
标签: node.js mongodb asynchronous stream mongoose