SAILSJS 的动态模型属性

Dynamic model attribute with SAILSJS

我的用例需要我在 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 不是函数的错误而触发。 需要帮忙!!!谢谢

这看起来是一种有趣的组织方式 - 我很好奇,如果没有一成不变的模型属性,项目能取得多大的成功。

我可以在您的代码中看到一些特定的错误,也许看到它们会帮助您继续前进。

  1. 从您的 model2 中,您使用字符串参数调用 getbyTable('person') - 但所有控制器方法实际上都旨在具有 reqest/response 个参数(如定义 getbyTable(req, res) 中所述)。直接调用控制器方法有点不寻常 - 如果你曾经这样做过,我希望传递来自其他控制器方法的请求和响应。
  2. getbyTable 中,您尝试 return 响应,但响应仅在 exec 回调中定义。响应将是从您的数据库中获取的一组对象 - 如果这是您需要的,您不能直接 return 它们,因为数据库调用是异步的。
  3. 您的控制器可能应该在所有逻辑分支中使用 res 执行某些操作,例如 res.jsonres.send

很难确切地看出您想要达到的目标,所以如果您能解释一下目标,我可能会得到一些更相关的建议。现在,我可以说您可能想考虑将一些代码放在服务而不是控制器中。创建文件 /api/services/MyService.js 并使用它来导出可以从您的 model2 调用的方法(您可以像控制器一样需要该服务)。严格控制控制器方法来处理请求。

祝你好运。