比较 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._iddiv= typeof object._id看看他们的类型是什么? 【参考方案1】:

ObjecId 实例是对象,因此像对象一样进行比较,而不是原语。 您应该使用任一

post._id.equals(object._id)

post._id.toString() === object._id.toString()

【讨论】:

以上是关于比较 Mongoose 对象 ID 时,if 语句在 Jade 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何比较 IF 语句中的两个变量?

使用 Mongoose 将对象存储在对象数组中

Mongoose 为所有嵌套对象添加 _id

Mongoose 为所有嵌套对象添加 _id

将对象 ID 推送到嵌套数组 MongoDB/Mongoose

then 语句中的异步 Mongoose 回调