Мне нужно передать значение по ссылке внутри запроса mon goose. Я должен обновить вложенный объект в моем документе Mongodb. Сейчас я решил использовать жесткий код, но в конечном итоге мне нужно соответствующим образом обновить запрос на обновление. Вот мой код:
function update(obj, newBill, category) {
return new Promise(function (resolve, reject) {
let qry;
switch (category) {
case 'internet':
qry = User.findOneAndUpdate({username: obj.username}, {$push: {"data.internet": newBill}});
break;
case 'electricity':
qry = User.findOneAndUpdate({username: obj.username}, {$push: {"data.electricity": newBill}});
break;
case 'water':
qry = User.findOneAndUpdate({username: obj.username}, {$push: {"data.water": newBill}});
break;
case 'gas':
qry = User.findOneAndUpdate({username: obj.username}, {$push: {"data.gas": newBill}});
break;
default:
break;
}
// let qry = User.findOneAndUpdate({username: obj.username}, {$push:{`data.${category}`:newBill}});
qry.exec(function (err, user) {
if (err) {
console.log(err)
return reject({err: 404})
} else {
console.log(user)
return resolve(JSON.stringify({code: 202, id: user._id}))
}
})
});
}
Мой код c, который будет обновлен
{"_id":{"$oid":"5e6ce0d25484e00d4dabc4cf"},"firstName":"yamin","lastName":"huzaifa","password":"admin1","username":"huz12","data":{"internet":[{"category":"internet","month":"Jan","year":{"$numberInt":"2019"},"amount":{"$numberInt":"70"}},{"test":"234"}],"electricity":[[{"month":"Jan","year":{"$numberInt":"2019"},"amount":{"$numberInt":"70"}}]]},"__v":{"$numberInt":"0"}}