【发布时间】:2017-08-20 17:42:16
【问题描述】:
我有一个使用 Express.js 构建并使用 TypeScript 编码的 Node.js 服务器。这是我的服务器的 get 调用的 sn-p:
server.ts
private get(req: Request, res: Response, next: NextFunction, objectName: string) {
var DatabaseObject = require("./models/" + objectName + ".js")(this.orm, Sequelize.DataTypes);
var Transform = require("./routes/" + objectName + ".js");
var transform = new Transform();
// ...
console.log(req.query["columns"]);
console.log(transform.columnWhitelist);
console.log(transform);
// ...
if (transform.columnWhitelist) {
console.log("Column Whitelist Exists.");
}
// ...
}
它为 URL 中请求的数据库对象动态加载 Sequelize 模块,然后尝试加载 TypeScript 模块,其中包含可以选择哪些列、可以查询哪些列等的规则。这是我的规则集的开头类:
account.ts
export default class Transform {
static columnWhitelist : Object = {"id": "id", "name": "name", "parentAccountId":"parentAccountId", "masterAccountId":"masterAccountId"};
constructor() { }
}
但是,运行我的应用程序,我得到:
id,name,parentAccountId
undefined
{ default:
{ [Function: Transform]
columnWhitelist:
{ id: 'id',
name: 'name',
parentAccountId: 'parentAccountId',
masterAccountId: 'masterAccountId' } } }
在调用 transform.columnWhitelist 时,我得到了未定义,尽管在生成的 JavaScript 文件中也看到了它。我也试过了:
var transform = require("./routes/" + objectName + ".js");
或者:
var transform = require("./routes/" + objectName + ".js")();
但这些都不起作用。
【问题讨论】:
标签: javascript node.js express typescript sequelize.js