通过url创建动态对象

时间:2018-04-11 16:17:41

标签: javascript node.js express mongoose javascript-objects

尝试通过URL请求uisng express动态创建mongoose模型的新实例。

在下面的示例中,如果const kind =' modelOne'通过网址,我得到了“无法读取的属性' modelOne'未定义的。一定是什么东西在这里,但我无法弄明白。

const { modelOne } = require('./modelOne');
const { modelTwo } = require('./modelTwo');
const { modelThree } = require('./modelThree');

function response(req, res) {
 const kind = req.body.kind;
 const object = new this[kind] ({
  text: req.body
 });
};

1 个答案:

答案 0 :(得分:0)

首先,即使可行,我也不建议你这样做。最好不要相信您在请求中获得的数据。请尝试switch或者像这样:

const { modelOne } = require('./modelOne');
const { modelTwo } = require('./modelTwo');
const { modelThree } = require('./modelThree');
const models = {modelOne, modelTwo, modelThree}

function response(req, res) {
 const kind = req.body.kind;
 const object = new models[kind] ({
  text: req.body
 });
};

this引用的对象不包含所有导入的模块。我猜您正在使用Express this === global。尝试将console.log(this)添加到该函数中,您将看到它包含的所有字段。