1

How can I make this query use my variable instead of the hard coded 0?

let pos = 0;

{$set: {'answers.0.acknowledged': data}}

2 Answers 2

2

Usually you choices are template literals, Array.join, String.concat etc:

let pos = 0;
let data = 'data';

let query = {$set: {[['answers.', pos,'.acknowledged'].join('')]: data}}

console.log(query);

With String.concat:

let pos = 0;
let data = 'data';
let query = {$set: {['answers.'.concat(pos,'.acknowledged')]: data}}
console.log(query);

Array.join, String.concat has a much better browsers support where template literals do not. If they were to be used @ the client side. In your case if you are using them at the back end you probably have nothing to worry about.

Sign up to request clarification or add additional context in comments.

Comments

2

You can use ES6 String Interpolation and Computed Property Names to build the key for $set:

let pos = 0;
let data = 'some data';
let q = {$set: {[`answers.${pos}.acknowledged`]: data}}
console.log(q);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.