如何使该查询使用我的变量而不是硬编码0?
let pos = 0;
{$set: {'answers.0.acknowledged': data}}
答案 0 :(得分:2)
您可以使用ES6 String Interpolation和Computed Property Names来构建$set
的密钥:
let pos = 0;
let data = 'some data';
let q = {$set: {[`answers.${pos}.acknowledged`]: data}}
console.log(q);
答案 1 :(得分:2)
通常您选择的是template literals,Array.join,String.concat等:
let pos = 0;
let data = 'data';
let query = {$set: {[['answers.', pos,'.acknowledged'].join('')]: data}}
console.log(query);
let pos = 0;
let data = 'data';
let query = {$set: {['answers.'.concat(pos,'.acknowledged')]: data}}
console.log(query);
Array.join,String.concat在template literals do not处具有更好的浏览器支持。如果要在客户端使用它们。如果您在后端使用它们,则可能不必担心。