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

时间:2019-10-04 02:40:13

标签: javascript node.js model-view-controller require modularity

比方说,我有两个名为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(),有没有办法所以我不需要这样做?

更新:我发现下面的答案对我有帮助,但感谢所有尝试了解我的意思的人,下次我将尝试变得更加清晰!

2 个答案:

答案 0 :(得分:1)

您还需要从let previewLayer = AVCaptureVideoPreviewLayer() previewLayer.videoGravity = .resizeAspectFill 文件中导出这些功能:

db.js

您说:

  

我希望能够通过使用db.getAll()和db.getOne()来调用方法,但是这样,我将需要使用db.dbPerson.getAll()和db.dbCar.getOne(),有没有办法让我不需要这样做?

是否有问题的原因?

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

//db.js const dbPerson=require('./dbPerson'); const dbCar=require('./dbCar'); module.exports = { getAll: dbPerson.getAll, getOne: dbCar.getOne } 对我来说很有意义,如果我做了db.dbCar.getOne(),我不确定是要买一辆车还是一个人。

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

db.getOne()

答案 1 :(得分:1)

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

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

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

请注意,这样做,dbPerson的冲突属性将被dbCar的属性覆盖。而且通过命名,将这两个对象合并起来是没有意义的(您称其既是Person又是Car的东西?)。

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

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