如何在 Node.js 中直接访问对象内部的对象?
How can I access objects inside objects directly in Node.js?
假设我有两个名为 dbPerson.js
和 dbCar.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,
}
假设我有两个名为 dbPerson.js
和 dbCar.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,
}