如何在 Node.js 中直接访问对象内部的对象?

How can I access objects inside objects directly in Node.js?

假设我有两个名为 dbPerson.jsdbCar.js 的文件,它们都有自己的方法,例如:

dbPerson.js:

module.exports = {
    getAll(callback){}
}

dbCar.js:

module.exports = {
    getOne(callback){}
}

然后我有另一个名为 db.js 的文件将导入这些文件:

const dbPerson=require('./dbPerson');
const dbCar=require('./dbCar');

最终我有一个导入 db.js:

的主文件
const db=require('./db');

我希望能够通过使用 db.getAll()db.getOne() 来调用这些方法,但是这样我就需要使用 db.dbPerson.getAll()db.dbCar.getOne(),有没有一种不需要这样做的方法?

更新: 我发现下面的答案对我有帮助,但感谢所有试图理解我的意思的人,下次我会尝试更清楚!

您还需要从 db.js 文件中导出这些函数:

//db.js
const dbPerson=require('./dbPerson');
const dbCar=require('./dbCar');

module.exports = {
    getAll: dbPerson.getAll, 
    getOne: dbCar.getOne
}

你说:

I want to be able to call the methods by using db.getAll() and db.getOne(), but this way I would need to use db.dbPerson.getAll() and db.dbCar.getOne(), is there a way so I don't need to do that?

有没有理由认为这是一个问题?

据我所知 - 你在谈论两种不同的 事物,汽车和人。

db.dbCar.getOne()对我来说很有意义,如果我做了db.getOne(),我就不确定我得到的是一辆车还是一个人。

您可以重命名导出中的方法,例如:

module.exports {
    getAllPersons: dbPerson.getAll, 
    getOneCar: dbCar.getOne, 
}

有几种方法可以做到。您选择哪条路径应取决于您的要求。

首先假设您要合并这两个对象(dbCar 和 dbPerson)。然后你可以简单地使用对象传播语法来做到这一点。

// db.js
module.exports = {
  ...dbPerson,
  ...dbCar,
}

请注意,这样做时,dbPerson 的冲突属性将被 dbCar 的属性覆盖。根据命名,合并这两个对象没有意义(你怎么称呼既是人又是车的东西?)。

另一种方法是使用代理对象来转发呼叫。

// db.js
module.exports = {
  getAll: dbPerson.getAll,
  getOne: dbCar.getOne,
}