2017-07-16 77 views
0

我有數據庫e.i中的描述產品數組。 [aaa,bbb,ccc],我想像[aaa,bbb,ccc,ddd]一樣將新項目添加到我的數組中,但是我的代碼沒有向數組添加新項目,只是像[ddd]一樣更改現有數組。 問題:在我的代碼中,我應該更改將新項目添加到現有數組中?在貓鼬的現有陣列中添加新項目

的index.html

<form name="editProduct.addForm" ng-submit="editProduct.addDescription(addDescription, editProduct.addForm.addDescription.$valid)" novalidate> 
<div ng-class="{ 'has-success':(editProduct.addForm.addDescription.$valid && !editProduct.addForm.addDescription.$pristine), 'has-error':(!editProduct.addForm.addDescription.$valid && !editProduct.addForm.addDescription.$pristine) || (!addForm.addDescription.$valid && addForm.$submitted) }"> 
    <label><h4>Add description:</h4></label> 
    <strong><input class="form-control" type="text" name="addDescription" ng-model="addDescription" placeholder="Add description" required></strong> 
</div> 
<br> 
<button ng-disabled="editProduct.disabled" class="btn btn-primary add-des" type="submit">Save</button> 
</form> 

api.js

router.put('/editProduct', function(req, res){ 
    var editProduct = req.body._id; 
    if(req.body.addDescription) var addDescription = req.body.addDescription; 

    User.findOne({ username: req.decoded.username }, function(err, mainUser) { 
     if(err) throw err; 
     if(!mainUser) { 
      res.json({ success: false, message: 'User no found'}); 
     } else { 
      if(addDescription){ 
       if(mainUser.permission === 'admin') { 
        var options = { new: true }; 
        Product.findOneAndUpdate({ _id: editProduct }, { description: addDescription }, options, function(err, product){ 
         if(err) throw err; 
         if(!product){ 
          res.json({ success: false, message: 'Product no found' }); 
         } else { 
          product.update(function(err){ 
           if(err){ 
            console.log(err); 
           } else { 
            res.json({ success: true, message: 'Added new description'}) 
           } 
          }); 
         } 
        }); 
       } else { 
        res.json({ success: false, message: 'You are not an admin'}) 
       } 
      } 
     } 
    }) 
}) 

回答

3

您可以使用$推運營商推新的項目,以這樣的數組 -

Product.findOneAndUpdate(
{ _id: editProduct }, 
{ $push: { 
    description: addDescription 
}}, options, function(err, product){ 

}); 
+0

謝謝,效果很好,但如果我有一個項目是一個選項這是一個對象和$推不工作,但是可能改變數組? –

+0

如果你想一次推多描述,試試這個 - '' – nomanbinhussein

+0

如果你想在一次推多描述,試試這個 - ' Product.findOneAndUpdate( {_id:editProduct},{ $ push:{ description:{ });}},options,function(err,product){ }); ' – nomanbinhussein