正在对已提取的文档进行填充.有可能吗?如果有,怎么做
Populating on an already fetched document. Is it possible and if so, how?
我有一个文档被提取为:
Document
.find(<condition>)
.exec()
.then(function (fetchedDocument) {
console.log(fetchedDocument);
});
现在,此文档引用了另一个文档。但在查询此文档时,我不会填充该引用。相反,我想稍后填充它。那么有什么方法可以做到这一点吗?我可以这样做吗:
fetchedDocument
.populate('field')
.exec()
.then(function (reFetchedDocument) {
console.log(reFetchedDocument);
});
我遇到的另一种方法是这样做:
Document
.find(fetchedDocument)
.populate('field')
.then(function (reFetchedDocument) {
console.log(reFetchedDocument);
});
现在,这是重新获取整个文档,还是只获取填充的部分并将其添加进去?
您的第二个示例(使用Document.find(fetchedDocument)
)效率很低。它不仅从MongoDB中重新获取整个文档,还使用以前获取的文档的所有字段来匹配MongoDB集合(而不仅仅是_id
字段)。因此,如果您的文档的某些部分在两次请求之间发生了更改,则此代码将找不到您的文档。
您的第一个示例(使用fetchedDocument.populate
)很好,除了.exec()
部分。
Document#populate
方法返回Document
,而不是Query
,因此不存在.exec()
方法。您应该使用特殊的.execPopulate()
方法:
fetchedDocument
.populate('field')
.execPopulate()
.then(function (reFetchedDocument) {
console.log(reFetchedDocument);
});
相关文章:
- 有可能过滤来自嵌入式YouTube的声音吗
- Livereload for node.js.有可能吗
- 有可能在来自链接的警报中有一个值吗
- 用于编写与我作为客户端查看的网页交互的脚本的术语(如果有的话)是什么
- 有可能通过sessionID获得快速会话吗
- 正在对已提取的文档进行填充.有可能吗?如果有,怎么做
- 如何在jquery中检测浏览器的后退按钮,如果有任何对话框打开,请关闭它
- 在 JavaScript 中是否有可能在指定点获取一个元素,如果它不在顶部但实际上可见
- 是否有可能,如果,如何在此环境中部署节点 + 乘客应用程序(HAProxy 1.4->Apache2)
- 是否有可能使它清楚,如果应用程序运行在网站的根下或在js应用程序下
- 是否有可能让w regexp模式允许诸如é吗?如果不是,还有什么替代方案呢?
- Chrome扩展:是有可能找出如果'调试器'声明中存在
- 是否有可能删除cookie使用它的值不是名称使用JavaScript?如果是,那么怎么做呢?
- 有可能“错过”吗?如果你在请求触发后订阅了JS中的异步事件
- 是否有可能在javascript中测试,如果var包含一个图像节点,如果它被加载
- 是否有可能确定滚动将最终使用javascript?如果有,怎么做呢?
- 是否有可能告诉如果覆盖新标签页被打开,因为一个应用程序安装
- 是否有可能告诉用户,如果我的页面最小化或非活动选项卡
- 是否有可能跟踪如果我的网站上的观众喜欢它
- 有可能做到“如果”吗?|| if .";