加载相关的mongoose数据

时间:2014-11-25 19:00:02

标签: javascript node.js mongoose

尽管几十年来一直是程序员,但我真的很挣扎于这种同步的,嵌套的回调编程风格。

我有这样的架构(rails parlance)

  • 物业有很多照片
  • 物业有很多套房
  • 套房有很多照片

当用户访问房产时,我可以很好地获得房产和套房。

Property.findOne( {key: locals.filters.property}).exec(function(err, property) {
  locals.data.property = property;      
  Photo.find( {property: property._id }).exec(function(err,photos) {
    locals.data.photos = photos;        
    Suites.find( { property: property._id }).exec(function(err,suites) {
      locals.data.suites = suites;
      next(err);
    });
  });
});

现在加载到req数组中很好。

我首选的方法是将文档方法解析为正确的关系文档,因此在模板中我可以执行property.photos.each而不是单独的无关数组。但我不确定这是否是“节点方式”。我需要保持猫鼬物体的完整。

但是如何迭代套件并填充照片? Mongoose populate不是一个选项,因为双方都没有引用。 Mongoose方法和虚拟是同步的。

我知道我在这里强迫关系风格关系,但我在keystone.js的约束下工作,所以嵌入不是一个选项。

数据集非常小。 B计划是在中间件中加载所有内容,并在路径中加下下划线和骰子。

0 个答案:

没有答案