Вы можете использовать match
для определения такой функции:
String.prototype.count = function(search) {
var m = this.match(new RegExp(search.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "g"));
return m ? m.length:0;
}
Спасибо @Sergio Tulentsev за помощь в решении проблемы, вот решение:
query = {
$push: {
evtsGame: newEvent
},
$set: {
[expField]: goalValue.exp,
updatedAt: moment().toISOString()
},
$inc: {
[scoreField]: goalValue.score
}
};
Вам нужно заставить expField
интерпретироваться как значение, а не как имя. Не уверен, возможно ли это в синтаксисе объектного литерала, но вы всегда можете сделать что-то вроде этого:
query = {
$push: {
evtsGame: newEvent
},
$set: {
updatedAt: moment().toISOString()
},
$inc: {
scoreField: goalValue.score
}
};
query['$set'][expField] = goalValue.exp;
Выполняя это,
$set: {
expField: goalValue.exp,
}
В базе данных, dbEngine
предположим, что в collection
имеется файл expField
, а затем он присваивает ему значение.
Попробуйте это решение, возможно, это помогает:
query = {
$push: {
evtsGame: newEvent
},
$set: {
updatedAt: moment().toISOString()
},
$inc: {
scoreField: goalValue.score
}
};
query['$set'][evtsGame]=goalValue.exp; // Change Here, It will be dynamic.