2017-09-15 82 views
0

我試圖更新使用貓鼬3.10.8問題與貓鼬更新3.10.8

let findQuery = {username: data.username}; 

let updateQuery ={ 
    "$addToSet":{ 
       "schemes":{ 
        "$each":[data.schemes] 
       } 
      } 
    }; 


return new Promise((resolve, reject) => { 
     this.modelInstance.update(findQuery, updateQuery).exec((err, result) => { 
      if(err) { 
       console.log(err); 
      } else { 
       resolve(result); 
      } 
     }) 
    }) 

的集合,但我的代碼觸發以下錯誤:

{ MongoError: '$set' is empty. You must specify a field like so: {$set: {: ...}}

如果啓用調試模式與mongoose.set('debug',true),我看到有一個查詢爲空$set

Mongoose: studentnotifications.update(
    { username: 'username1' }, 
    { 
    '$set': {}, 
    '$setOnInsert': { 
     created_at: new Date("Fri, 15 Sep 2017 12:51:36 GMT") 
    }, '$addToSet': { 
     schemes: { 
      '$each': [ { schemeName: 'scheme1' } ] 
     } 
    } 
    }, 
    { overwrite: undefined } 
) 

那麼我應該禁用設置?

回答

0

OK,閱讀下面的文檔

https://github.com/Automattic/mongoose/wiki/3.8-Release-Notes#modelupdate-now-supports-overwrite

後,我不得不設置選項{覆蓋:真正}

但是我怎麼禁用對updatedAt:新的日期(「星期五, 2017年9月15日13時02分28秒GMT 「),created_at:新的日期(」 星期五,2017年9月15日13時02分28秒GMT「)

因爲我得到的錯誤

{ MongoError: The dollar ($) prefixed field '$addToSet' in '$addToSet' is not valid for storage. 

如果我刪除updatedAt領域,而在命令提示符下運行其數據得到更新