在 Mongoose 中推送 ObjectId

Posted

技术标签:

【中文标题】在 Mongoose 中推送 ObjectId【英文标题】:Push ObjectId in Mongoose 【发布时间】:2018-07-02 10:35:05 【问题描述】:

我正在使用快递、护照和猫鼬。我不知道为什么,但下面的代码将相同的 newTaxReturn._id 两次推送到 user.taxReturnIds 字段中。如果我删除user.save().catch(() => ) 行,它会正确推送newTaxReturn._id,即只推送一次。用户参数来自护照。

问题:

const createTaxReturn = ( user ) => 
  const newTaxReturn = new TaxReturn( userId: user._id )
  user.taxReturnIds.push(newTaxReturn._id)
  user.save().catch(() => )
  return newTaxReturn.save().catch(() => )

架构:

const User = new mongoose.Schema(
  taxReturnIds: [
    type: mongoose.Schema.Types.ObjectId,
    ref: 'TaxReturn',
  ],
)

const TaxReturn = new mongoose.Schema(
  userId: 
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User',
  ,
)

【问题讨论】:

【参考方案1】:

在您返回时,您还调用了 .save(),因此当您删除时重复和单个输入

user.save().catch(() => )

将您的回报放在 .then 或 .catch 中以从 mongo 检索响应

user.save().catch(error =>  if (error) return error )

【讨论】:

以上是关于在 Mongoose 中推送 ObjectId的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 $push (Mongoose) 在数组中推送多个对象

如何在 Mongoose 中推送数组

如何使用 mongoose 在 MongoDB 数组中推送数据

使用 Mongoose 在集合内的文档中增加和推送新值的有效方法

返回推送对象的 id nodejs mongoose

Mongoose,推送一个数组 Model.update 不是函数