我正在使用Node.js创建我的第一个后端项目。我正在使用Express 4和Mongoose构建股票交易应用程序。用户有一个股票对象列表{symbol: amount}
。当用户想要购买股票时,他们会发送带有股票,金额和动词的POST请求,在这种情况下“购买”。在文中,
我从请求正文中获取库存和金额,并将其添加到用户的库存清单中,并将数据添加到操作列表中。我使用{stock: 'F', amount: '2', verb: 'buy'}
发布请求,因此生成的库存清单应为stocks:[{'F': '2'}]
和
actions: [{"time": "2015-01-20T19:07:15.000Z",
"verb": "buy",
"amount": 2,
"stock": "P",}]
当我执行user.stocks.push(stockObject);
时,user.stocks变为[{ _id: 54be8739dd63f94c0e000004 }]
而不是[{'F': '2'}]
,并且操作列表变为
"行动":[
{
"时间":" 2015-01-20T19:07:15.000Z",
"动词":"购买",
"金额":2,
" stock":" P",
" _id":" 54bea763589e571f0f000004"
}]
添加了_id。
当动作列表获取具有id的完整对象时,为什么股票列表仅获取具有id的对象?
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;
}
var action = {
time: Date(),
verb: req.body.verb,
amount: req.body.amount,
stock: req.body.stock
}
user.stocks.push(stockObject);
user.actions.push(action);
user.save(function(err) {
if (err)
res.send(err);
res.json({ actions: user.actions, stocks: user.stocks });
});
});
})