我已经获得了以下功能,只要detail
参数是按字母顺序排列且不包含句点,该功能就有效。如何将键设置为提供的字符串。
var logHit = function(data, callback){
var update = {};
var inc = {};
var detail = data.detail;
inc['detail.'+detail+'.daily'] = 1; // <----- this line!
update['$inc'] = inc;
collection.update(
{
directory_id: data.directory_id,
date: data.date.y+'-'+data.date.m,
action: data.data.info[0],
},
update,
{upsert: true},
function(error, result){
assert.equal(error, null);
assert.equal(1, result.result.n);
callback();
});
}
我已经使用了inc['detail."'+detail+'".daily'] = 1;
虽然它解决了一个问题,但它会创建一些其他问题,例如导致问题的"
字符,并且密钥以{{1开头和结尾字符。
有没有办法让句点和句号都有效,这是一个好主意吗?或者我应该剥离特殊字符并将完整字符串包含在一个单独的参数中,该参数对命名没有限制?