尽管几十年来一直是程序员,但我真的很挣扎于这种同步的,嵌套的回调编程风格。
我有这样的架构(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计划是在中间件中加载所有内容,并在路径中加下下划线和骰子。