2017-01-16 4 views
0

ここで私の質問は、watchlistSchema.update(function (error) { { $push: { watchlist: req.body.stockAdded } }});のウォッチリスト属性の既存のスキーマを更新していないのですか?この更新プログラムを使用すると何も起こりませんし、nullを返します。私はwatchlistSchema.saveに変更すると動作しますが、それは完全に別のドキュメントを作成します。私は基本的にユーザとウォッチリストをチェックしたいと思います。両方が一緒に存在するなら、ウォッチリスト配列に文字列をプッシュしたいと思います。私は非常に混乱しているので、マングースには非常に新しいです。マングースアップデートが動作しない

var Schema = mongoose.Schema;  

var watchlistSchema = new Schema({ 
    watchlist: [{ }], 
    user: String 
}); 

var Watchlist = mongoose.model('Watchlist', watchlistSchema, "watchlist");  

app.post('/watchlistPost', function (req, res) { 

var watchlistSchema = Watchlist({ 
    'watchlist': req.body.stockAdded, 
    'user': req.user.username 
}); 

Watchlist.findOne({ 
    $and: [{ 
     'watchlist': req.body.stockAdded, 
    }, { 
     'user': req.user.username 
    }] 
}, function (err, list) { 
    if (list) { 
     res.status(200).send({ "success": "Updated Successfully", "status": 200 }); 
    } else { 
     if (req.user) { 
      watchlistSchema.update(function (error) { 
       { $push: { watchlist: req.body.stockAdded } } 
      }); 
     } else { 

     } 
    } 
}) 
}); 

答えて

0

updateステートメントには「検索」クエリが含まれている必要があります。したがって、指定したクエリに一致するすべてのドキュメントに更新条件を適用できます。

var Schema = mongoose.Schema;  

var watchlistSchema = new Schema({ 
    watchlist: [{ }], 
    user: String 
}); 

var Watchlist = mongoose.model('Watchlist', watchlistSchema, "watchlist");  

app.post('/watchlistPost', function (req, res) { 

var watchlistSchema = Watchlist({ 
    'watchlist': req.body.stockAdded, 
    'user': req.user.username 
}); 

var query = { 
    $and: [{ 
     'watchlist': req.body.stockAdded, 
    }, { 
     'user': req.user.username 
    }]}; 

Watchlist.update(query, { $push: { watchlist: req.body.stockAdded } }, ==your callback to check stuff==); 

は次のようにコードを変更

関連する問題