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!

有帮助吗?

解决方案

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
} };
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top