比较 Mongoose 对象 ID 时,if 语句在 Jade 中不起作用
Posted
技术标签:
【中文标题】比较 Mongoose 对象 ID 时,if 语句在 Jade 中不起作用【英文标题】:if statement doesn't work in Jade when comparing Mongoose Object Ids 【发布时间】:2015-12-04 20:06:17 【问题描述】:所以我有一个故事对象,我试图将它与故事数组进行比较,以查看故事对象是否在数组中。但是它不起作用,我不知道为什么。
//news.jade
each post in favPosts
div=post._id
div=object._id
if (post._id === object._id)
span same
else
span no
// the output (those are ObjectID from mongoose)
55e3e6dcd22670d8032a4ddf
55ef8999a89ed2fc72d8159f
no
55e3e6bbd22670d8032a4dde
55ef8999a89ed2fc72d8159f
no
55ef8999a89ed2fc72d8159f
55ef8999a89ed2fc72d8159f
no <=== this should be same
55ef8028283872046809c0f2
55ef8999a89ed2fc72d8159f
no
【问题讨论】:
您可以尝试将两者都类型转换为 mongo db 对象 ID 吗? 您可能需要使用==
而不是===
,尽管它们似乎应该是相同的类型,因此不需要它。此外,您可能需要考虑一种更有效的比较检查方法,具体取决于您的使用方式。 (即:查找具有特定 id 的文章。如果您要对所有文章做某事,那么这可能无关紧要,您可以忽略最后一点。)
你可以试试div= typeof post._id
div= typeof object._id
看看他们的类型是什么?
【参考方案1】:
ObjecId
实例是对象,因此像对象一样进行比较,而不是原语。
您应该使用任一
post._id.equals(object._id)
或
post._id.toString() === object._id.toString()
【讨论】:
以上是关于比较 Mongoose 对象 ID 时,if 语句在 Jade 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章