javascript - 在 Mongoose 中推送 ObjectId

标签 javascript node.js express mongoose passport.js

我使用的是 Express、Passport 和 Mongoose。我不知道为什么,但下面的代码将相同的 newTaxReturn._id 两次推送到 user.taxReturnIds 字段中。如果我删除 user.save().catch(() => {}) 行,它会正确推送 newTaxReturn._id ,即仅推送一次。用户参数来自 Passport 。

问题:

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',
  },
})

最佳答案

返回时,您还会调用 .save() ,因此删除时会出现重复和单个输入

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

将返回值放入 .then 或 .catch 中以检索来自 mongo 的响应

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

关于javascript - 在 Mongoose 中推送 ObjectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48404568/

相关文章:

javascript - 如何以正确的方式表示两个日期之间的日期数组列表?

javascript - 为什么添加 "rel=' 样式表“会阻止本地 css 文件在浏览器中加载?

node.js - 未捕获的异常测试 GET 资源

javascript - 为什么当我指示更高版本的 NodeJS 时 "npm install"没有失败?

Flash 游戏服务器建议(Node.js、Red5 等)

node.js - 如何使用 express-validator 抛出自定义错误?

node.js - 在 Express.js 中,我们如何使 res.send 等待从数据库中获取数据

javascript - 对多个 Twitter 帐户使用 Twitter API Stream?

javascript - 函数完成后如何删除滚动事件

javascript - Mocha/Sinon - ES6 Promise 内使用 child_process.exec 进行单元测试/ stub 功能