试图填写B. mongoose 要是 ref 不是 null - 不起作用
我正在努力获取有关他们作者的信息的书籍。
一些用户被删除,因此他们在数据库中不再有文档,因此他们的信息 null.
我正试图拉书 ONLY, 如果他们的创造者仍然存在。
这是我的代码:
这就是他的回归:
注意该字段 _creator IS null.
为什么是这样?
一些用户被删除,因此他们在数据库中不再有文档,因此他们的信息 null.
我正试图拉书 ONLY, 如果他们的创造者仍然存在。
这是我的代码:
Book.find/{_creator:{$ne:null}}/.populate/
{
path: '_creator',
match: { _id: { $ne: null }}
}/
.exec/function /err,books/ {
if/err/ throw err;
if/books/ {
res.send/books/
}
}/
这就是他的回归:
[
{
"_id":"55d98e6a4de71010099c59eb",
"dateOfCreation":"2015-08-23T09:12:10.095Z",
"_creator":null,
"__v":0,
"coverUrl":"cover14403211323926quv.png",
"description":"asdasd",
"name":"asdasd"
}
]
注意该字段 _creator IS null.
为什么是这样?
没有找到相关结果
已邀请:
1 个回复
帅驴
赞同来自:
mongoose 从数据库中获取所有书籍
. Mongo只是看看书籍内的链接,以确定哪些文件返回。 您的书中仍然有一个链接,蒙特加不会注意到作者收集中没有合适的作者,因此您的书籍已加载。
mongoose 填补所有返回的结果:通过这种方式,它从作者收集加载作者,并替换具有实体对象的链接。 对于你的书,他找不到合适的作者,所以它把它放在那里
.
这就是为什么你最终得到你的结果列表。
Mongo 不支持关联,因此您无法执行包含来自多个集合数据的请求。 填充只是一种替换与实际数据的结果列表中的链接的方法,您可以永远不会将已完成的数据用作您建议的一部分 where.
要解决您的问题,您可以:
在代码中过滤您的最终结果列表 JS, 例如,使用 _.filter 图书馆 lodash.
每当删除作者时更新所有书籍并删除链接。 为此,您可以在作者方案上使用钩子。