【问题标题】:My $push method in Mongoose does not work ok我在 Mongoose 中的 $push 方法不起作用
【发布时间】:2020-11-06 04:24:25
【问题描述】:

我很难理解为什么 $push 在嵌套数组中只创建一个元素并且只显示该元素的 id

const mongoose = require('mongoose');

let historySchema = new mongoose.Schema({
    time: {
        type:String
    }
})

//users schema

let userSchema = new mongoose.Schema({
    name:{
        type:String,
        
    },
    dob:{
        type:String,
        
    },
    email:{
        type:String,
        
    },
    noOfpeopleClimbing:{
        type: Number,
        default:0
    },
    details:{
        type:String,
        
    },
    status:{
        type: Boolean,
        default: false
    },
    timeIn:{
        type: Number,
        default: 0
    },
    timeOut:{
      type: Number,
      default: 0
    },
    timeFinal:{
      type: Number,
      default: 0
  },
    timeHistory:[{historySchema}]

})

let User = module.exports = mongoose.model("User", userSchema);

我说的是 timeHistory:[{historySchema}] 其余的你可以忽略。 我正在运行下一个测试:

app.post('/users/reset_timeIn/:id', function(req,res){

    Users.findOneAndUpdate({_id:req.params.id},{
        timeIn:0,
        timeOut:0,
        timeFinal:0,
        timeHistory:{
            $push: {time:"some text" }
        },
        status:false,
        noOfpeopleClimbing:0



    },function(err){
        if(err){
            console.log(err);
            return
        }else{
            res.redirect(req.get('referer'));
        }
    })
});

time:"some text" 仅用于测试。这个测试的输出,不管我推了多少次,都是这样的:

{
            "noOfpeopleClimbing": 0,
            "status": false,
            "timeIn": 0,
            "timeOut": 0,
            "timeFinal": 0,
            "_id": "5fa3faa68b302530fcb6bba5",
            "name": "Name",
            "dob": "1666-02-02",
            "email": "name@name.com",
            "__v": 0,
            "details": "name",
            "timeHistory": [
                {
                    "_id": "5fa44343aece7d37dc532fd9"
                }
            ]
        },

“timeHistory”应该包含 id 和字段时间:“一些文本”,对吗?如果我推动另一条记录在该数组的第二个对象中拥有该记录?正确的?请帮忙

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    您似乎没有正确使用$push。尝试将正确的路径传递给操作员,在您的情况下是:

    Users.findByIdAndUpdate(req.params.id, {
        timeHistory: {
            $push: {
                time: "some text"
            }
        }
    })
    

    这是mongoplayground 上的一个示例。

    【讨论】:

    • @Lucian:有什么反馈吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2018-07-30
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    相关资源
    最近更新 更多