【发布时间】:2015-03-19 00:59:32
【问题描述】:
我正在使用 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,
“股票”:“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 });
});
});
})
【问题讨论】:
标签: javascript node.js mongodb express mongoose