Я создаю свой первый проект с помощью Node.js, Express.js и Mongoose. У меня есть пользователь, со списком объектов акций [{symbol: amount}]
. Когда пользователь хочет купить акции, они отправляют запрос POST с запасом, суммой и глаголом в этом случае «покупать». В Почте я беру запас и сумму из органа запроса и добавляю его в список акций Пользователя.Почему Mongoose заменяет пару ключ/значение в объекте с _id?
Запрос с
{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
});
});
});
})
А, это имеет смысл. Итак, есть способ указать пару «ключ/значение» в схеме, или я должен отслеживать каждый запас по отдельности своим mongoose _id, а не пытаться делать user.stocks [stockSymbol]? – EasilyBaffled