有没有办法在node-mongodb-native驱动程序中使用动态密钥?我的意思是让变量保持键而不是直接使用键。
正如人们通常会这样做的那样:
db.createCollection('col', function(err, col){
col.insert({'_id':'wak3ajakar00'});
}
代替这样做:
db.createCollection('col', function(err, col){
var ID = '_id';
col.insert({ID:'wak3ajakar00'});
}
当我运行后面的代码时,除了标准创建的ID
之外,我最终得到了集合db.col中的文档和一个名为_id
的密钥,而不是一个密钥{{ 1}},其值为_id
。这让我相信实际上不可能直接这样做。
相反,我现在只是创建我想提前插入的文档,如下所示:
wak3ajakar00
这与我想要的完全一样,但我只是想知道是否有更好的方法来解决这个问题。 JavaScript,NodeJS和MongoDB对我来说都是新手,所以我觉得我很容易丢失一些东西。如果没有,有没有更简洁的方法在JavaScript中编写上述代码?
最好,谢谢,萨米
答案 0 :(得分:9)
在对象文字语法中,您不能将变量用作键名,只能使用值。执行此操作的方法是您已经发现的方式 - 首先创建对象,然后使用方括号表示法将属性添加为单独的步骤。
var obj = {};
var ID = "_id";
obj[ID] = "wak3ajakar00";
答案 1 :(得分:2)
您可以编写一个创建此类对象的小函数
var obj = function(key, value, obj) {
obj = obj || {};
obj[key] = value;
return obj;
}
// Usage
foo = obj('foo' + 'bar', 'baz');
// -> {'foobar': 'baz'}
foo = obj('stack' + 'over', 'flow', foo);
// -> {'foobar': 'baz', 'stackover': 'flow'}
不知道调用此函数 obj 是否是一个好主意。