【问题标题】:How can I dynamically choose a database named in a string variable? [duplicate]如何动态选择以字符串变量命名的数据库? [复制]
【发布时间】:2017-06-27 21:08:43
【问题描述】:

我想根据下面的字符串在我的应用程序中动态调用不同的数据库集合:

const collection = 'books';
db.${collection}.find()  // turns into db.books.find()

我正在使用 ES6,所以如果有任何简单的方法可以做到这一点,那就太好了!我一直找不到创建它的方法。

编辑:我不是试图访问对象的一部分,而是在任何地方。我也想做类似的事情

${collection}.db.find()

【问题讨论】:

  • 动态访问变量通常是糟糕的设计。改为创建name => database 地图。
  • 你这是什么意思?在我目前的情况下,我正在尝试访问我可能事先不知道的数据库名称。
  • “我可能事先不知道” 在这种情况下,同名的变量怎么可能存在呢?我说的是${collection}.db.find() 部分。

标签: javascript function ecmascript-6


【解决方案1】:

JavaScript 对象的每个属性都可以使用方括号来访问。像这样:

const collection = 'books';
db[collection].find()

【讨论】:

  • 我试图在对象的任何位置执行此操作,而不仅仅是在属性内
【解决方案2】:

如果是动态字符串,您应该使用格式

db[collection].find() // turns into db['books'].find()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects

object.property
object['property']

都是一样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2019-07-03
    • 2020-01-22
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多