带有SAILSJS的动态模型属性

问题描述 投票:1回答:1

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

dynamic model sails.js
1个回答
0
投票

这看起来像是一种有趣的组织方式-我很好奇,如果没有在石头上设置Model属性,那么项目会多么成功。

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

  1. [从model2中,您使用字符串参数调用getbyTable('person')-但实际上所有控制器方法都意图具有请求/响应参数(如定义getbyTable(req, res)中一样。直接调用控制器方法有点不寻常-如果您曾经做到了,我希望传递其他控制器方法的请求和响应。
  2. getbyTable内部,您尝试返回响应,但是响应仅在exec回调内部定义。响应将是从数据库中获取的对象数组-如果这是您所需要的,则由于数据库调用是异步的,因此无法直接返回它们。
  3. 您的控制器可能应该在所有逻辑分支中对res进行操作,例如res.jsonres.send

很难确切地知道您要实现的目标,因此,如果您能解释目标,我可能会提供一些更相关的建议。现在,我可以说您可能要考虑将一些代码放入服务而不是控制器中。创建文件/api/services/MyService.js并使用它导出可从model2调用的方法(您可以像控制器一样要求服务)。严格保留控制器方法以处理请求。

祝你好运。>>

© www.soinside.com 2019 - 2024. All rights reserved.