【发布时间】:2015-03-21 09:14:58
【问题描述】:
我正在使用 Node.js、Express.js 和 Mongoose 创建我的第一个后端项目。我有一个用户,有一个股票对象列表[{symbol: amount}]。
当用户想要购买股票时,他们会发送一个 POST 请求,其中包含股票、金额和动词(在这种情况下为“购买”)。在帖子中,我从请求正文中获取库存和数量,并将其添加到用户的库存列表中。
一个带有
的请求{stock: 'F', amount: '2', verb: 'buy'}
应该加
{'F': '2'}
到用户的股票。问题是当我使用
创建和推送库存时stockObject[stock] = amount;
user.stocks.push(stockObject);
user.stocks 变为 [{ _id: 54be8739dd63f94c0e000004 }] 而不是 [{'F': '2'}],但是当我制作时
stockObject={'symbol':stock, 'amount': amount}
并推动我会得到
[{'symbol': 'F', 'amount': '2', _id: 54be8739dd63f94c0e000004}]
为什么 Mongoose 会在第一种情况下替换我的数据,而在第二种情况下保留它?
var UserSchema = new Schema({
id: String,
stocks: [{
symbol: String,
amount: Number
}]
});
router.route('/user/:user_id/action')
.post(function(req, res) {
User.findOne({
id: req.params.user_id
}, function(err, user) {
if (err) res.send(err);
var stock = req.body.stock;
var amount = req.body.amount;
var stockObject = {};
if (req.body.verb === 'buy') {
stockObject[stock] = amount;
}
user.stocks.push(stockObject);
user.save(function(err) {
res.json({
stocks: user.stocks
});
});
});
})
【问题讨论】:
标签: javascript node.js mongodb mongoose backend