【问题标题】:Can't change value of object variable that is a result of a query in Javascript / ExpressJS / Mongodb无法更改作为 Javascript / ExpressJS / Mongodb 中查询结果的对象变量的值
【发布时间】:2019-08-07 02:00:51
【问题描述】:

所以我有以下代码:

let addSubmissions = await Submission.find({"type": "add-information"}, (err) => {
    if(err) {
        console.log(err)
        req.flash('error', 'No "add submissions" were found')
        res.redirect('/admin')
    }
})

for(let addKey in addSubmissions) {
    let currentAddSubmissionAircraft = addSubmissions[addKey].aircraft

    let addSubmissionAircraft = await Aircraft.findById(currentAddSubmissionAircraft, {name: 1}, (err) => {
        if(err) {
            console.log(err)
            req.flash('error', 'No aircraft was found with the given ID')
            res.redirect('/admin')
        }
    })

    addSubmissions[addKey].aircraft = addSubmissionAircraft.name
}

我从 MongoDB 的 Submission 集合中获取所有提交,并将它们分配给 addSubmissions 变量。其中一个字段是“飞机”,它的值是来自另一个名为“飞机”的集合的 id。
在 for 循环中,我从提交中搜索具有“飞机”字段(即 id)的飞机,我想将“addSubmissions.aircraft”的值从 id 更改为飞机的名称。
由于某种原因,对象没有改变。
知道为什么吗?
谢谢:)

【问题讨论】:

标签: javascript mongodb express


【解决方案1】:

你必须在你的函数find中设置一个名为lean()的方法。

Submission.find({}).lean().then()

还有一个问题:Can't add a new property to an object returned by Mongoose query

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多