如何重命名猫鼬的字段?

时间:2019-12-19 19:49:26

标签: javascript node.js mongoose

我有一个数据库,该数据库最初是按以下方式设置的;

const productSchema = new mongoose.Schema({
  supplier: {
    type: String,
    required: 'Supplier is required',
    ref: 'Supplier'
  },
  name: {
    type: String,
    required: 'Name is required'
  },
  price: {
    type: Number,
    required: 'Price is required'
  }
}) 

但是现在我想像这样将字段name重命名为product

const productSchema = new mongoose.Schema({
  supplier: {
    type: String,
    required: 'Supplier is required',
    ref: 'Supplier'
  },
  product: {
    type: String,
    required: 'Product is required'
  },
  price: {
    type: Number,
    required: 'Price is required'
  }
}) 

我从客户那里得到的结果没有更新为显示product而不是name

结果:

[
  {
    "_id": "5df7baa7acf4ed3897d8d4c9",
    "supplier": "Old Co Ltd",
    "name": "Small Woggle",
    "price": 6
  }
]

最后是我的数据库,其中以猫鼬填充字段;

mongoose.connect(dbURI, (err, db) => {

  db.dropDatabase()

    .then(() => Product.create([{
      supplier: 'Old Co Ltd',
      product: 'Small Woggle',
      price: 6
    }]))
    .then(products => console.log(`${products.length} products created`))
    .catch(err => console.log(err))
    .finally(() => mongoose.connection.close())
})

请帮助我重命名此字段

2 个答案:

答案 0 :(得分:0)

您不能只重命名架构中的字段。您需要实际运行更新。

示例:

productSchema.update({}, { $rename: { name: 'product' } }, { multi: true }, (err) => {
  if(err) { throw err; }
  console.log('complete');
});

https://docs.mongodb.com/manual/reference/operator/update/rename/

答案 1 :(得分:-1)

上面的答案有效,但是我也找到了一个替代方法,而没有在您的代码中添加任何内容。

只需使用以下步骤即可; 1.在终端运行mongod 2.导航到db并删除数据库db.dropDatabase() 3.然后通过在文件上运行node来初始化数据库。