【问题标题】:if statement doesn't work in Jade when comparing Mongoose Object Ids比较 Mongoose 对象 ID 时,if 语句在 Jade 中不起作用
【发布时间】:2021-10-01 13:21:23
【问题描述】:

所以我有一个故事对象,我试图将它与故事数组进行比较,以查看故事对象是否在数组中。但是它不起作用,我不知道为什么。

//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看看他们的类型是什么?

标签: templates express mongoose pug


【解决方案1】:

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

post._id.equals(object._id)

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

【讨论】:

    猜你喜欢
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多