javascript - 有没有办法在 node-mongodb-native 中使用动态 key ?

标签 javascript mongodb node.js

有没有办法在 node-mongodb-native 驱动程序中使用动态键?我的意思是让一个变量保存 key 而不是直接使用 key 。

就像人们通常会这样做:

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 的键,而不是只需一个键 _id,其值为 wak3ajakar00。这让我相信实际上不可能直接做到这一点。

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

db.createCollection('col', function(err, col){
    var ID = 'wak3ajakar00';
    var key = '_id';
    insertion = {}
    insertion[key] = ID;
    col.insert(insertion);
}

这完全符合我的要求,但我只是想知道是否有更好的方法来解决这个问题。 JavaScript、NodeJS 和 MongoDB 对我来说都是新的,所以我觉得我很容易遗漏一些东西。如果没有,有没有更简洁的方法可以用 JavaScript 编写上述代码?

最好的,谢谢,
萨米

最佳答案

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

您现在可以将变量用方括号括起来,作为对象文字中的属性名称:

const ID = "_id";
col.insert({ [ID]: "wak3ajakar00" });

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

const _id = "wak3ajakar00";
col.insert({ _id });

2011 年的原始答案:

在对象字面量语法中,不能使用变量作为键名,只能使用值。执行此操作的方法是您已经发现的方法 - 首先创建您的对象,然后使用方括号表示法将属性添加为单独的步骤。

var obj = {};
var ID = "_id";
obj[ID] = "wak3ajakar00";

关于javascript - 有没有办法在 node-mongodb-native 中使用动态 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7047209/

相关文章:

javascript - 防止刷新?

JavaScript 将矢量图形转换为光栅,但不转换为 Acrobat 文本

javascript - 在 Node.JS 中跨数组迭代保存

mongodb - 交换 MongoDB 数组中的值

javascript - 如何访问meteor.js中集合的元素?

node.js - Firestore 事务在单个事务中更新多个集合

javascript - Ember 数据 : Get a Model in the Console

javascript - 设置 DIV 高度,这样文本就不会被水平切割或切片

node.js - 如何在批量插入中使用 Mongoose 预中间件?

javascript - 从 express 中间件访问数据