在 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 在 MongoDB 数组中推送数据