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() 函数没有将数据推送到数组中的主要内容,如果未能解决你的问题,请参考以下文章

Array.push 没有正确推送

Mongoose,推送一个数组 Model.update 不是函数

Node.js - Mongodb - Mongoose / 无法将数组字符串传递到 $push feild

如何在 Mongoose 中推送数组

push message (短消息推送) 技术Java怎么实现,有没有大神可以讲解一下

Java Linked List Stack推送功能不更改数据