簡體   English   中英

使用nodejs更新mongodb中的數據

[英]update data in mongodb using nodejs

我是 NodeJS 和 mongodB 的初學者,我正在使用 mongoose 並嘗試使用此代碼更新產品數據

  return new Promise((resolve, reject) => {
    mongoose.connect(DB_URL, { useUnifiedTopology: true, useNewUrlParser: true }).then(() => 
            feature = new FaeturesModel({
              name: featureName,
              description: featureDesc,
              catagory: featureCatagory,
              price: featurePrice + ' IQD' ,
              image: featureImage,
              dateOfCreation: new Date().toJSON().slice(0, 10).replace(/-/g, '/')
            })).then(() => {
      return FaeturesModel.updateOne({"_id" : id} , {$set : {feature}})
            .then(()=> feature.save())
          .then(() => {
            mongoose.disconnect();
            resolve()
          }).catch(err => {
            mongoose.disconnect();
            reject(err)
          })
        }
      )
})}

問題是記錄被添加為新記錄而不刪除舊記錄

保存文檔會創建一個新文檔。 如果你想更新一些東西:

await Model.updateOne({ _id: doc._id }, { $set: { name: 'foo' } })

基本上刪除.then(()=> feature.save())就可以了。

這是來自文檔

編輯

抱歉,我忘了提一下,當您更新時,您不會像這樣new Feature()創建一個新文檔,而是說:

Model.updateOne({ _id: id }, { $set: req.body }).then(res => {
  // do stuff
})

因為new Feature()會創建一個附加了新_id的新文檔,所以您無法更新現有文檔。

希望現在很清楚:D

編輯 2

這不是問題的一部分,但使用

const schema = new Schema({
  ...
},
{ timestamps: true });

在您的架構中

dateOfCreation: new Date().toJSON().slice(0, 10).replace(/-/g, '/')

保存創建日期更容易。

exports.updateFeature = (id,featureName, featureCatagory, featurePrice , featureDesc , featureImage) => {
  return new Promise((resolve, reject) => {
    mongoose.connect(DB_URL, { useUnifiedTopology: true, useNewUrlParser: true }).then(() => 
            feature =({
              name: featureName,
              description: featureDesc,
              catagory: featureCatagory,
              price: featurePrice + ' IQD' ,
              image: featureImage,
              dateOfCreation: new Date().toJSON().slice(0, 10).replace(/-/g, '/')
            })).then(() => {
      return FaeturesModel.updateOne({'_id' : id} , {$set : feature})
            
          .then(() => {
            mongoose.disconnect();
            resolve()
          }).catch(err => {
            mongoose.disconnect();
            reject(err)
          })
        }
      )
})}```

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM