Question

I am trying to make a dynamic condition using Mongoose but it doesn't work as I imagined.

the code is like this

id = req.params.questionId;
index = req.params.index;

callback = function(err,value){
   if(err){

       res.send(err)

   }else{

       res.send(value)

    }
};

conditions = {
    "_id": id,
    "array._id": filterId
};
updates = {
   $push: {
      "array.$.array2."+index+".answeredBy": userId
   }
};
options = {
  upsert: true
};

Model.update(conditions, updates, options, callback);

As you see, I am trying to make dynamic condition using "index" variable. Is it possible to do like this?

Thank you in advance!

Was it helpful?

Solution

You need to create your updates object in two steps:

var updates = { $push: {} };
updates.$push["array.$.array2." + index + ".answeredBy"] = userId;

Update

Now that node.js 4+ supports computed property names, you can do this in one step:

var updates = { $push: {
    ["array.$.array2." + index + ".answeredBy"]: userId
} };
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top