Dynamic 带SAILSJS的动态模型属性

Dynamic 带SAILSJS的动态模型属性,dynamic,model,sails.js,Dynamic,Model,Sails.js,我的用例需要我在Sails.Js项目中使用动态模型属性,而我的所有方法都失败了。首先,我尝试从model2调用model1方法,但它不起作用。我还尝试使用全局变量,但这也失败了,因为全局变量是在应用程序加载后设置的,最后我从model2调用了model1Controller,但它仍然不起作用。 这是我的Model2控制器中的方法 getbyTable:function(req,res){ let field = Field.find({fTable:req.param('tab

我的用例需要我在Sails.Js项目中使用动态模型属性,而我的所有方法都失败了。首先,我尝试从model2调用model1方法,但它不起作用。我还尝试使用全局变量,但这也失败了,因为全局变量是在应用程序加载后设置的,最后我从model2调用了model1Controller,但它仍然不起作用。 这是我的Model2控制器中的方法

 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不是一个函数,它作为错误激发。
需要帮助!!!谢谢。

这看起来是一种很有趣的组织方式——我很想知道,如果没有固定的模型属性,项目会有多成功

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

  • 从model2中,您可以使用字符串参数调用
    getbyTable('person')
    ,但所有控制器方法实际上都有reqest/response参数(如定义
    getbyTable(req,res))
    。直接调用控制器方法有点不寻常——如果您曾经这样做过,我希望传递来自其他控制器方法的请求和响应
  • getbyTable
    中,您尝试返回响应,但响应仅在
    exec
    回调中定义。响应将是从数据库中获取的对象数组-如果您需要,则无法直接返回,因为数据库调用是异步的
  • 您的控制器可能应该在所有逻辑分支中使用
    res
    ,例如
    res.json
    res.send
    ,等等
  • 你很难准确地看到你想要达到的目标,所以也许你能解释一下这个目标,我可以有一些更相关的建议。现在,我可以说,你可能想考虑把一些代码放在一个服务内而不是一个控制器中。创建文件<代码> /API/Services /MyService。JS<代码>,并使用它导出一个方法。从model2调用(您可以像控制器一样需要服务)。严格保留控制器方法以处理请求


    祝你好运。

    这看起来是一种有趣的组织方式——我很好奇,如果没有固定的模型属性,一个项目会有多成功

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

  • 从model2中,您可以使用字符串参数调用
    getbyTable('person')
    ,但所有控制器方法实际上都有reqest/response参数(如定义
    getbyTable(req,res))
    。直接调用控制器方法有点不寻常——如果您曾经这样做过,我希望传递来自其他控制器方法的请求和响应
  • getbyTable
    中,您尝试返回响应,但响应仅在
    exec
    回调中定义。响应将是从数据库中获取的对象数组-如果您需要,则无法直接返回,因为数据库调用是异步的
  • 您的控制器可能应该在所有逻辑分支中使用
    res
    ,例如
    res.json
    res.send
    ,等等
  • 你很难准确地看到你想要达到的目标,所以也许你能解释一下这个目标,我可以有一些更相关的建议。现在,我可以说,你可能想考虑把一些代码放在一个服务内而不是一个控制器中。创建文件<代码> /API/Services /MyService。JS<代码>,并使用它导出一个方法。从model2调用(您可以像控制器一样需要服务)。严格保留控制器方法以处理请求


    祝你好运。

    谢谢你的回答,我将对你的建议进行修改。我想做的是:我有一个字段表,其中包含数据库中的所有表属性,因此,我不想逐个指定模型属性,而是希望从字段表中提取tableName=我的表名的所有记录。我明白了-如果我理解,当应用程序“提升”时,您将从每个模型的表中加载字段。这可能会起作用。我将尝试创建一个
    字段服务
    ,并在每个模型中调用它以获取所需的字段。如果在定义其他模型时使用
    字段
    模型导致某种问题,我不会感到惊讶(此时可能尚未定义
    Field
    )-您可能需要查看底层数据库,并更直接地使用它来获取字段-可能需要底层数据库驱动程序(例如
    require('mongodb'))
    或其他直接的方法。谢谢您的回答,我将在您的建议中应用更改。我尝试做的是:我有一个字段表,其中包含数据库中的所有表属性,因此,我不想逐个指定模型属性,而是希望从字段表中获取tableName=我的表名的所有记录。我明白了-如果请理解,当应用程序“提升”时,您将从每个模型的表中加载字段。这可能行得通。我会尝试创建一个
    字段服务
    ,并在每个模型中调用该服务,以获取所需的字段。如果在定义其他模型时使用
    字段
    模型导致某种问题(可能此时尚未定义
    字段
    ),我不会感到惊讶-您可能需要研究如何获取基础数据库,并更直接地使用它来获取字段-可能需要基础数据库驱动程序(例如
    require('mongodb')
    或直接使用。