2016-07-19 82 views
0

我建立後端與MEAN堆棧,但是當我嘗試在數據庫中更新文件我得到一個錯誤:爲什麼在更新MongoDb時出錯?

topUp = function(name, amount, callback) { 
    User.updateOne(
     { "name" : name }, 
     { $set: { "wallet": amount } }, 
     function(err, results) { 
      console.log(results); 
      callback(); 
     }); 
}; 

類型錯誤:User.updateOne不是一個函數

但如findOne()工作正常:

User.findOne({ 
       name: decoded.name 
      }, function(err, user) { 
       if (err) throw err; 

       i 

f (!user) { 
       return res.status(403).send({success: false, msg: 'Authentication failed. User not found.'}); 
      } else { 
       //res.json({success: true, info: {wallet: user.wallet, userPic: user.userPic}}); 
       topUp(decoded.name, amount, function() { 
        User.close(); 
       }); 
      } 
     }); 

「User」是一個Mongo模型文件。

+0

因爲'findOne'是一個預定義函數,但'updateOne()'不是。它應該默認只更新一條記錄。您可以使用'multi:true'來更新多個記錄。 –

+0

@MohitBhardwaj好,根據Mongo文檔updateOne()也是預定義的:[proof](https://docs.mongodb.com/getting-started/node/update/) – boooni

+0

我認爲它沒有在數據庫驅動中定義你可能正在使用。我認爲你使用的是Mongoose,而'updateOne()'在那裏不可用。您不能在所有驅動程序中使用所有本地mongodb函數。 –

回答

1

我認爲它沒有在您可能使用的數據庫驅動程序中定義。我認爲你正在使用貓鼬,並且updateOne()在那裏不可用。您不能在所有驅動程序中使用所有本地mongodb功能

相關問題