2016-07-25 54 views
2

我有這樣的代碼貓鼬不是沒有錯誤的數據保存

 User.findOne({ email: req.body.email }, function(err, user) { 
     if (user) { 
      return res.status(400).json([{ msg: 'The email address you have entered is already associated with another account.' }]); 
     } 
     user = new User({ 
      name: req.body.name, 
      email: req.body.email, 
      password: req.body.password, 
      mobile: req.body.mobile 
     }); 
     user.save(function(err) { 
      res.json({ token: generateToken(user), user: user }); 
     }); 
     }); 

我試圖發送一個帶有郵遞員請求,我沒有得到響應與用戶對象這意味着在保存功能

沒有犯錯
{ 
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJleGNlcHRpb25zLnNnIiwic3ViIjoiNTc5NWQ0NzQxYmEzZWQwODE1ZTgzY2NmIiwiaWF0IjoxNDY5NDM3MDQ0LCJleHAiOjE0NzAwNDE4NDR9.2otkcPkJgsXvR8QOHAojDJ5YCxR7Uc2E4ApS77T55F8", 
    "user": { 
    "__v": 0, 
    "created_at": "2016-07-25T08:57:24.612Z", 
    "updated_at": "2016-07-25T08:57:24.612Z", 
    "name": "Test", 
    "email": "[email protected]", 
    "password": "$2a$10$3UmABiDPeo6iHZ.DFbwOO.1ANpUWQmwr86bYbTmRuFedsbDcE0bbC", 
    "mobile": 12345, 
    "_id": "5795d4741ba3ed0815e83ccf" 
    } 
} 

但是這裏面沒有我的數據庫的條目。我用Robomongo檢查了我的數據庫,我確信沒有數據。我錯過了什麼?

回答

4

你ARENT處理錯誤,同時節省收集,用

user.save(function(err){ 
     if(err){ 
      console.log(err); 
      return; 
     } 

     res.json({ token: generateToken(user), user: user }); 
}); 

取代你user.save功能通過這您將能夠跟蹤數據是否已保存,以及可能存在的相關錯誤。

+0

謝謝。我有一個在模式中不存在的用戶名字段重複鍵錯誤。丟棄了收藏品,它再次運作。沒有意識到我沒有捕捉到錯誤。 – Exceptions

0

我覺得這是概率剛剛嘗試這一點,更改用戶對象的變量名

User.findOne({ email: req.body.email }, function(err, user) { 
     if (user) { 
      return res.status(400).json([{ msg: 'The email address you have entered is already associated with another account.' }]); 
     } 
     newUser = new User({ 
      name: req.body.name, 
      email: req.body.email, 
      password: req.body.password, 
      mobile: req.body.mobile 
     }); 
     newUser.save(function(err,saveUser) { 
      res.json({ token: generateToken(saveUser), user: saveUser }); 
     }); 
     }); 
0

對於有此問題的其他人,您的型號的_idSchemaType必須爲ObjectId

假設我們有一個架構和模型定義爲:

var userSchema = new mongoose.Schema({ 
    _id: mongoose.Schema.ObjectId, 
    userID: Number, 
    name: String 
}); 

var Users = mongoose.model('collectionName', userSchema); 

而且我們希望與userID 1234更新用戶的名稱:

Users.findOne({userID: 1234}, function(err, user) { 
    user.name = "Jane Doe"; 

    user.save(function(err) { 
     // ... 
    } 
} 

貓鼬將成功進行更新:

users.update({ _id: ObjectId("anObjectID") }, { '$set': { name: 'Jane Doe' } }) 

如果我們將SchemaType設置爲_idStringuserSchema,它會這樣做:

users.update({ _id: 'anObjectID' }, { '$set': { name: 'Jane Doe' } })