首页 > 解决方案 > 具有两个非常相似的数组的对象,一个显示另一个不显示

问题描述

我有一个对象,其中包含两个嵌入的对象数组,在我看来它们几乎相同,如我的数据库中所示:

在此处输入图像描述

但是当我尝试访问前端 javascript 中的一个数组时,它显然是空的。另一个不是,正如我将其记录到浏览器控制台时看到的那样:

在此处输入图像描述

数组中的对象几乎完全相同。我担心问题是当我将一个新对象推送到“利益相关者”数组时,异步函数在页面再次加载之前没有完成,但我在返回响应之前在该函数中使用 async/await

addStakeholder = async (req, res, next) => {
...
project.stakeholders.push(stakeholder)
await project.save()

res.status(200).json({
    status: 'success',
    project: project

谁能告诉我我在这里可能做错了什么?

编辑:对不起,我会尝试添加更多细节,所以在表单提交中有这个.....

createStakeholderForm.addEventListener('submit', async (e) => {
    // getting properties etc, this all works 

    await createStakeholder({ stakeholders, project })
    window.setTimeout(() => {
        location.reload()
    }, 1000)
})

它将它传递给这个 axios 函数....

createStakeholder = async (data) => {
try {
    const url = `http://127.0.0.1:3000/stakeholder`

    const res = await axios({
        method: 'POST',
        url: url,
        data: data
    })
    if (res.data.status === 'success') {
        showAlert('success', `Stakeholder created`)
    }
} catch (err) {
    showAlert('error', err.response.data.message)
}

}

并将帖子路由到此功能.....

addStakeholder = async (req, res, next) => {
const query = { _id: req.body.project }

const project = await Project.findById(query)
const stakeholder = req.body.stakeholders

project.stakeholders.push(stakeholder)
await project.save()

res.status(200).json({
    status: 'success',
    data: {
        data: project
    }
})

})

标签: javascript

解决方案


虽然您的代码有什么问题并不明显。幸运的是,调试路径是。

开始追踪电线。听起来事情正在正确地保存在数据库中,但没有到达前端。我会在查询数据库的调用站点的后端控制台登录您的代码。确认它是你所期望的。假设可行,请在下游添加另一个 console.log,继续这样做,直到利益相关者数据消失。本练习将向您展示代码中涉众被丢弃的位置。


推荐阅读