首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在node-mongodb-native中使用动态键?

有没有办法在node-mongodb-native中使用动态键?
EN

Stack Overflow用户
提问于 2011-08-13 07:02:03
回答 2查看 4.4K关注 0票数 5

有没有办法在node-mongodb本机驱动程序中使用动态键?我的意思是让一个变量持有密钥,而不是直接使用密钥。

当一个人通常这样做的时候:

代码语言:javascript
复制
db.createCollection('col', function(err, col){
    col.insert({'_id':'wak3ajakar00'});
}

为此,请执行以下操作:

代码语言:javascript
复制
db.createCollection('col', function(err, col){
    var ID = '_id';
    col.insert({ID:'wak3ajakar00'});
}

当我运行后一段代码时,我在集合db.col中得到了一个文档,除了一个标准创建的_id之外,还有一个名为ID的键,而不仅仅是一个值为wak3ajakar00的键_id。这让我相信实际上不可能直接做到这一点。

相反,我现在只是创建我想要提前插入的文档,如下所示:

代码语言:javascript
复制
db.createCollection('col', function(err, col){
    var ID = 'wak3ajakar00';
    var key = '_id';
    insertion = {}
    insertion[key] = ID;
    col.insert(insertion);
}

这就像我想要的那样工作,但我只是想知道是否有更好的方法。JavaScript、NodeJS和MongoDB对我来说都是新的,所以我觉得我很容易遗漏一些东西。如果没有,有没有更干净的方法用JavaScript编写上面的代码呢?

最好的,谢谢,

萨米语

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-13 07:10:02

2020编辑:现在可以通过几种方便的新方法创建对象文字:

现在,您可以通过将变量括在方括号中,将其用作对象文本中的属性名称:

代码语言:javascript
复制
const ID = "_id";
col.insert({ [ID]: "wak3ajakar00" });

在对象文字中,可以使用变量名作为属性名,使用变量值作为属性值,如下所示:

代码语言:javascript
复制
const _id = "wak3ajakar00";
col.insert({ _id });

2011年的原始答案:

在object文本语法中,不能将变量用作键名,只能将值用作键名。要做到这一点,就像你已经发现的那样--首先创建你的对象,然后使用方括号符号将属性作为一个单独的步骤添加。

代码语言:javascript
复制
var obj = {};
var ID = "_id";
obj[ID] = "wak3ajakar00";
票数 9
EN

Stack Overflow用户

发布于 2013-04-11 22:00:01

您可以编写一个小函数来创建这样的对象

代码语言:javascript
复制
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是否是一个好主意。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7047209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档