我的用例需要我在Sails.Js项目中使用动态模型属性,并且所有方法都会失败。首先,我尝试从model2调用model1方法,但是它不起作用。我也尝试使用全局变量,但这也失败了,因为在应用程序加载后设置了全局变量,最后我从model2调用了model1Controller,但是它仍然无法正常工作。这是我的model2Controller中的方法]
getbyTable:function(req,res){
let field = Field.find({fTable:req.param('tableName')});
field.exec(function(err, response) {
if(err) {
res.status(500);
return res.view('500', {data: err});
}
//res.json(response);
return response;
});
},
这是我的模特2
'use strict';
const fieldController = require('../controllers/Model1Controller');
const donnees = fieldController.getbyTable('person');
module.exports={
}
运行时,由于req.param不是函数而触发错误。需要帮忙!!!谢谢。
这看起来像是一种有趣的组织方式-我很好奇,如果没有在石头上设置Model属性,那么项目会多么成功。
我可以在您的代码中看到一些特定的错误,也许看到它们可以帮助您继续前进。
getbyTable('person')
-但实际上所有控制器方法都意图具有请求/响应参数(如定义getbyTable(req, res)
中一样。直接调用控制器方法有点不寻常-如果您曾经做到了,我希望传递其他控制器方法的请求和响应。getbyTable
内部,您尝试返回响应,但是响应仅在exec
回调内部定义。响应将是从数据库中获取的对象数组-如果这是您所需要的,则由于数据库调用是异步的,因此无法直接返回它们。res
进行操作,例如res.json
,res.send
等很难确切地知道您要实现的目标,因此,如果您能解释目标,我可能会提供一些更相关的建议。现在,我可以说您可能要考虑将一些代码放入服务而不是控制器中。创建文件/api/services/MyService.js
并使用它导出可从model2调用的方法(您可以像控制器一样要求服务)。严格保留控制器方法以处理请求。
祝你好运。>>