我目前正在使用API,我想创建类,一个类Object
从表中检索数据,而一个类与表相关联。我正在尝试在Object
类中创建一个属性,该属性是在从与表关联的类中调用静态方法get()
时设置的。我应该如何使用属性?
我的API正在Express上运行,我在Ubuntu 19.04上,我使用ObjectionJS作为我的ORM,我也使用了Knex。我有一个loader.js
文件,该文件需要我所有的模型文件。
Object.js:
'use strict';
const dbTables = require('../../src/database/Models/loader');
module.exports = class Object {
constructor () {
console.log('Test');
}
//Get queries
static get() {
console.log(`ModelName = ${this.modelName}`);
const req = 'dbTables.' + this.modelName + '.query()';
return eval(req);
}
}
UserClass.js:
'use strict';
const Object = require('./Object');
module.exports = class UserClass extends Object {
constructor() {
super('Employee');
this.modelName = 'Employee';
}
};
这是我遇到的错误:
ModelName = undefined
TypeError: Cannot read property 'query' of undefined
at eval (eval at get (/home/usersio/SafiAPI/src/Classes/Object.js:17:16),<anonymous>:1:20)
at Function.get (/home/usersio/SafiAPI/src/Classes/Object.js:17:16)
at app.get (/home/usersio/SafiAPI/index.js:54:28)
at Layer.handle [as handle_request] (/home/usersio/SafiAPI/node_modules/express/lib/router/layer.js:95:5)
at next (/home/usersio/SafiAPI/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/usersio/SafiAPI/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/usersio/SafiAPI/node_modules/express/lib/router/layer.js:95:5)
at /home/usersio/SafiAPI/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/home/usersio/SafiAPI/node_modules/express/lib/router/index.js:335:12)
at next (/home/usersio/SafiAPI/node_modules/express/lib/router/index.js:275:10)
at methodOverride (/home/usersio/SafiAPI/node_modules/method-override/index.js:65:14)
at Layer.handle [as handle_request] (/home/usersio/SafiAPI/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/usersio/SafiAPI/node_modules/express/lib/router/index.js:317:13)
at /home/usersio/SafiAPI/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/usersio/SafiAPI/node_modules/express/lib/router/index.js:335:12)
at next (/home/usersio/SafiAPI/node_modules/express/lib/router/index.js:275:10)