Mongoose push() 函数没有将数据推送到数组中
Posted
技术标签:
【中文标题】Mongoose push() 函数没有将数据推送到数组中【英文标题】:Mongoose push() function isn't pushing the data into the array 【发布时间】:2021-09-01 23:21:36 【问题描述】:我必须将产品数据推送到其中包含 store[] 数组的用户文档中, 我使用的代码如下
const db = require("../../auth/models");
const User = db.user
exports.addProduct = (req, res) =>
User.findOne(
username: req.body.username
, function(err, user)
if (err)
res.status(500).send( message: err )
else
console.log(user)
user.store.push(
id: req.body.id,
barcode: req.body.barcode,
productName : req.body.productName,
price : req.body.price,
quantity: req.body.quantity
)
)
res.status(200).send( message: "Product updated successfully!!")
;
当我使用 console.log(user) 时,它给了我找到的用户数据,而 console.log(req) 给了我输入的形式,我无法解决这个问题。如果您需要解决问题,请在 cmets 中告诉我,我将发布它们。提前谢谢你
【问题讨论】:
能否给出user和req的数据结构? 【参考方案1】:您的代码运行良好:您正在数据库中找到您的用户,并且您正在其文档的 .store 数组中推送一个新商店。但是您之后不会保存用户文档。您需要使用 Mongoose 的方法 .save() 并且只有在该操作成功完成后,才发送您的响应:
User.findOne(
username: req.body.username
, function(err, user)
if (err)
res.status(500).send( message: err )
else
console.log(user)
user.store.push(
id: req.body.id,
barcode: req.body.barcode,
productName : req.body.productName,
price : req.body.price,
quantity: req.body.quantity
)
user.save(function(err, newUser)
if (err)
res.status(500).send( message: err );
else
console.log(newUser);
res.status(200).send( message: "Product updated successfully!!")
)
)
【讨论】:
以上是关于Mongoose push() 函数没有将数据推送到数组中的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose,推送一个数组 Model.update 不是函数
Node.js - Mongodb - Mongoose / 无法将数组字符串传递到 $push feild