小编Dav*_*vid的帖子

猫鼬是如何在幕后工作的

有人可以告诉我怎么做

我有一个集合

a {
 b: String
 c: Date
 d: ObjectId --> j
}

j {
 k: String
 l: String
 m: String
}
Run Code Online (Sandbox Code Playgroud)

当我执行一个:

a.find({ b: 'thing' }).populate('d').exec(etc..)
Run Code Online (Sandbox Code Playgroud)

在后台这实际上是对MongoDB执行两个查询,以便返回所有项'j'?

我没有遇到填充工作的问题,我关心的是任务的性能影响.

谢谢

mongoose mongodb mongoose-populate

8
推荐指数
1
解决办法
1948
查看次数

Node.js Streams on(end) 在异步 on(readable) 完成之前完成

我正在使用 Node.js 请求库和 node-feedparser 来捕获提要,并将其发布到使用 Mongoose 的 MongoDB 数据库中。

我将帖子信息存储到帖子集合中,将提要信息存储到提要集合中,但我需要将 post._id 存储在提要集合中名为 feeds._post 的数组中。

我遇到的问题是使用流接口,在所有 feedparser.on('readable') 对数据库的异步调用完成之前调用 feedparser.on('end'),因此我最终得到假设 Post 集合中有 15 个帖子,而 Feed._post 数组中只有 11 个 post._id。

我知道如果这只是普通的 JavaScript,我可以使用 async 来确保 .on('end') 等待所有 .on('readable') 完成,但是我该如何处理流?

提前致谢。

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();
  });

});
Run Code Online (Sandbox Code Playgroud)

asynchronous stream mongoose mongodb node.js

5
推荐指数
1
解决办法
1319
查看次数

Backbone listenTo多个属性触发多个事件

我有一个模型,在初始化函数中我有以下代码:

this.listenTo(this, 'change:re change:read', this.patch);
Run Code Online (Sandbox Code Playgroud)

补丁的功能如下:

patch: function(object) {
  this.save(object.changed, { patch: true });
},
Run Code Online (Sandbox Code Playgroud)

在我的应用程序的其他地方,我可能会运行:

model.set({ re: 1 });
Run Code Online (Sandbox Code Playgroud)

要么:

model.set({ read: new Date() });
Run Code Online (Sandbox Code Playgroud)

这两个都很完美,但是当我打电话时:

model.set({ re: 1, read: new Date() });
Run Code Online (Sandbox Code Playgroud)

补丁函数被调用两次,并有两个往返到服务器.如果可能的话,我想保持这一次往返.

任何人都可以帮助这个吗?

非常感谢

大卫

backbone.js backbone-events

5
推荐指数
1
解决办法
5571
查看次数