Home > Back-end >  MongoServerError: Cannot create field 'approved' in element
MongoServerError: Cannot create field 'approved' in element

Time:03-11

I want to push element inside array which is inside nested element.
Similar questions have been asked. I tried the solutions but didn't worked for me.
Error message is

MongoServerError: Cannot create field 'approved' in 
element {transactionList: [ { id: 0, greeterAddress: "0x0", executed: 0, value: 
"namaste", approved: [ "0xDcb980b3d6Bd61a86A8d7Cb9bbd937452f7E745D", 
"0xDcb980b3d6Bd61a86A8d7Cb9bbd937452f7E745D" ], _id: 
ObjectId('62275a5b1722b740ade011ad') } ]}

Document Schema

const transaction = new mongoose.Schema({
    id: {type: Number, required:true},
    greeterAddress: {type:String, required:true},
    executed: {type:Number, required:true},
    value: {type:String, required:true},
    approved:{type: [String]}
})
const walletInfo = new mongoose.Schema({
    walletAddress: {type: String, required: true},
    networkName: {type: String, required:true},
    minApproval: {type: Number, required:true},
    ownerAddress: {type: [String]},
    greeter: {type: [String]}, 
    transactionList: {type:[transaction]}
})

Executed code which is giving out the error

app.post('/approve_transaction', async(req,res)=>{
    walletAddress = req.query.address
    id =  req.query.id
    greeterAddress =  req.query.greeterAddress
    await walletInfo.updateOne(
        {
            walletAddress:walletAddress,
            'transactionList.id':id,
            'transactionList.greeterAddress':greeterAddress
        },
        {
            $push:{
                'transactionList.approved':walletAddress
            }
        })
    res.sendFile('success')
       
    
})

Document present below

{
"_id" : ObjectId("62275a0f1722b740ade011a9"),
"walletAddress" : "0xDcb980b3d6Bd61a86A8d7Cb9bbd937452f7E745D",
"networkName" : "4",
"minApproval" : 1,
"ownerAddress" : [ 
    "0x6ED8cB56eF8602e138E7e588EA65A5b33f402087", 
    "0x6cb691b71CB057e3C92DBB729580e1A7A2868e1c"
],
"greeter" : [],
"transactionList" : [ 
    {
        "id" : 0,
        "greeterAddress" : "0x0",
        "executed" : 0,
        "value" : "namaste",
        "approved" : [],
        "_id" : ObjectId("62275a5b1722b740ade011ad")
    }
],
"__v" : 0
}

CodePudding user response:

Issue solved by replacing transactionList.approved by transactionList.$.approved

  • Related