首页 文章

保存后重新填充mongoose文档

提问于
浏览
1

我试过在SO上查看其他问题,但它们都有点过时了 . 我正在使用Mongoose来保存对文档的更改 . 我希望能够重新填充我的参考字段 . 我在Mongoose问题中看到herehere已经添加了类似的东西,但我似乎无法让它工作,除非我手动"depopulate"字段,使用模型填充,然后保存文档 .

例如,如果我有一个这样的模式引用另一个集合:

var EmployeeSchema = new Schema({
    Name: {
        type: String
        required: true
    },
    Manager: {
        type: Schema.ObjectId,
        ref: 'Managers'
    }
});

填充的对象看起来像这样:

{
    Name: 'Test Employee',
    Manager: {
        _id: <Some ObjectId>
        Name: 'Test Manager',
        Group: 'HR'
    }
}

如果我更改管理器的ID值然后调用 employee.save(callback) ,则返回的数据仅具有正确的ID,但尚未使用新Manager重新填充 Manager 字段 . 如果没有上面描述的所有步骤,有没有办法快速完成这项工作?

1 回答

  • 0

    我认为在您想要更改员工经理的情况下通常会发生的情况是:

    • 加载员工模型 . 如果您只是打算在不使用现有管理器值的情况下进行更改,则可能不需要在此时填充管理器 . 确保你用 employee.manager = newManager 更改它而不是 employee.manager._id = newManagerId 否则我不确定mongoose会正确理解你的变化 .

    • 更改内存模型中的管理器 . 但是,只需保持对此实例的引用,这样您就不必从数据库中重新获取它 .

    • 使用新经理ID保存员工

    • 如果您想对填充的员工(将其发送到浏览器或其他)做更多事情,只需使用步骤2中的现有参考而不是重新获取 .

相关问题