在mongo中发现this问题后,我发现了引起我注意的事情(看then()
方法)
// connect to mongo, use Mongo Client
mongoose.connect(MONGO_URI, {useMongoClient: true})
.then(({db: {databaseName}}) => console.log(`Connected to ${databaseName}`))
.catch(err => console.error(err));
我确实理解,在mongoose
对象中有db
属性以及下面的两个或三个级别&sa; databaseName
这就是我想要的情况。
我的问题:
谢谢
答案 0 :(得分:4)
您所看到的是ES6 destructing syntax,而非对象。
它的意思是:
.then()
db
属性db
以查找其中的databaseName
属性databaseName
提升到当前范围(在本例中为您的功能范围)最深层的变形变量将在当前范围内可用。这是一个例子:
let { db: { databaseName } } = { db: { databaseName: 'ding' } }
// now databaseName is available in the current scope
console.log(databaseName)
// prints "ding"
这与用于执行ES6模块导入的语法相同:
// import the entire module into the current scope
import something from 'something'
// import only parts of the module into the current scope
import { InsideSomething } from 'something'
// some people also destructure after importing and entire module
const { InsideSomething, another: { InsideAnother } } = something;