node.js - 在 Mongoose 中提交一个模型,其中包含一个带有 ObjectID 的数组

标签 node.js reactjs mongodb mongoose

我有一个名为company的对象,里面有name(String)locations(Array) 在位置内部,我希望有一个由用户生成的名为 name 的 key ,以及使用 ObjectID 生成的第二个 key 。 不幸的是我无法让它按预期工作。

Example from Postman 。请注意,这些位置未获取 _id

出了什么问题?

我的模型

const mongoose = require('mongoose')

const companySchema = mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  name: String,
  locations: [
    {
      _id: mongoose.Schema.Types.ObjectId,
      name: String
    }
  ]
})

module.exports = mongoose.model('Company', companySchema)

我的 Controller

  createCompany: (req, res) => {
    const { name, locations } = req.body

    const company = new Company({
      _id: new mongoose.Types.ObjectId(),
      name: name,
      locations: locations
    })

    company
      .save()
      .then(() => {
        res.status(200).json({
          company
        })
      })
      .catch(error => {
        res.status(500).json({
          error
        })
      })
  },

最佳答案

Mongoose 将为文档本身的顶层和嵌套数组创建 _id,这是默认行为。

因此,应该只使用您想要的字段来定义架构。

const companySchema = new mongoose.Schema({
  name: String,
  locations: [
    {
      name: String
    }
  ]
});
module.exports = mongoose.model("Company", companySchema);

const locationSchema = new mongoose.Schema({
  name: String
});
const companySchema = new mongoose.Schema({
  name: String,
  locations: [locationSchema]
});
module.exports = mongoose.model("Company", companySchema);

随后您也不需要从 Model 对象创建 _id

const company = new Company({
  name: name,
  locations: locations
});
company
  .save()
  .then(() => {})
  .catch(e => {});

关于node.js - 在 Mongoose 中提交一个模型,其中包含一个带有 ObjectID 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59587295/

相关文章:

reactjs - React/Redux 导出默认 connect() 似乎没有连接到 Provider

node.js - 无法找到模块 './collection/batch/unordered' - Heroku 上的 Node JS

node.js - 如何使用 Google Drive Node.js 断点续传

javascript - 如何在nodejs中导出函数

reactjs - 我怎样才能让 TypeScript 对 React Prop 中的传播运算符进行类型检查?

javascript - 意外行为 : function vs functional component and animations

mongodb - Meteor-JS 支持离线存储/缓存吗?

mongodb - 当没有指定排序顺序时,MongoDB 如何对记录进行排序?

node.js - Mongoose promise 和 sonarqube

Node.js - 我不断收到以下错误 : Error: ffmpeg stream: write EPIPE