Javascript SailsJS未将数据传递给视图模板

Javascript SailsJS未将数据传递给视图模板,javascript,mysql,templates,sails.js,Javascript,Mysql,Templates,Sails.js,我已经在这里呆了好几个小时了,只是似乎无法建立联系 我只是尝试将一些数据从控制器传递到视图模板。如果我在没有声明视图模板的情况下运行路由,那么浏览器会将JSON格式的数据返回给浏览器(因此我知道MYSQL连接很好) 每当我尝试连接到MYSLQ数据(或从控制器到视图的任何数据)以传递到模板时,我都会在Sails中得到一个错误,该错误表示找不到数据(我知道这不是真的,因为我可以在返回JSON数据时看到它)。我假设这与SailsJS尝试连接到EJS模板引擎的方式有关,或者在后端的模型、控制器和视图之间

我已经在这里呆了好几个小时了,只是似乎无法建立联系

我只是尝试将一些数据从控制器传递到视图模板。如果我在没有声明视图模板的情况下运行路由,那么浏览器会将JSON格式的数据返回给浏览器(因此我知道MYSQL连接很好)

每当我尝试连接到MYSLQ数据(或从控制器到视图的任何数据)以传递到模板时,我都会在Sails中得到一个错误,该错误表示找不到数据(我知道这不是真的,因为我可以在返回JSON数据时看到它)。我假设这与SailsJS尝试连接到EJS模板引擎的方式有关,或者在后端的模型、控制器和视图之间没有连接

这里只是一个不起作用的简单示例,但最后我尝试连接到一个MYSQL数据列表

Routes.js声明:

'GET /schools': { view: 'schools/index', controller: "SchoolsController", action:"index"},
SchoolsController.js

module.exports = {
 index: function(req, res){
    //Just return this to the view
    res.view({
        "name": "Iparra"
    })
 }
};
index.ejs模板

<div id="theschools">
 <h1>List of Schools</h1>
  <%= name %>
</div>

学校名单
从Sails.js获取的错误

{
    "stack": "ReferenceError: /Users/mnelson/Documents/Mike Files 2/Personal/MyDesign Musings/sails/test-project/views/schools/index.ejs:7\n    5|       <h1>List of Schools</h1>\n    6| \n >> 7|     <%= name %>\n    8| \n    9| </div>\n    10| \n\nname is not defined\n    at eval (eval at <anonymous> (/usr/local/lib/node_modules/sails/node_modules/ejs-locals/node_modules/ejs/lib/ejs.js:237:14), <anonymous>:30:109)\n    at eval (eval at <anonymous> (/usr/local/lib/node_modules/sails/node_modules/ejs-locals/node_modules/ejs/lib/ejs.js:237:14), <anonymous>:30:137)\n    at /usr/local/lib/node_modules/sails/node_modules/ejs-locals/node_modules/ejs/lib/ejs.js:250:15\n    at Object.exports.render (/usr/local/lib/node_modules/sails/node_modules/ejs-locals/node_modules/ejs/lib/ejs.js:288:13)\n    at Object.exports.renderFile (/usr/local/lib/node_modules/sails/node_modules/ejs-locals/node_modules/ejs/lib/ejs.js:318:20)\n    at SailsView.module.exports [as engine] (/usr/local/lib/node_modules/sails/node_modules/ejs-locals/index.js:85:7)\n    at SailsView.View.render (/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/view.js:76:8)\n    at Function.app.render (/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/application.js:561:10)\n    at ServerResponse.res.render (/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/response.js:845:7)\n    at ServerResponse.res.view (/usr/local/lib/node_modules/sails/lib/hooks/views/res.view.js:284:16)\n    at serveView (/usr/local/lib/node_modules/sails/lib/hooks/views/onRoute.js:61:20)\n    at routeTargetFnWrapper (/usr/local/lib/node_modules/sails/lib/router/bind.js:181:5)\n    at callbacks (/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:164:37)\n    at param (/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:138:11)\n    at pass (/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:145:5)\n    at nextRoute (/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:100:7)\n    at callbacks (/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:167:11)\n    at module.exports (/usr/local/lib/node_modules/sails/lib/hooks/cors/clear-headers.js:14:3)\n    at routeTargetFnWrapper (/usr/local/lib/node_modules/sails/lib/router/bind.js:181:5)\n    at callbacks (/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:164:37)\n    at param (/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:138:11)\n    at pass (/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:145:5)",
  "message": "/Users/mnelson/Documents/Mike Files 2/Personal/My Design Musings/sails/test-project/views/schools/index.ejs:7\n    5|       <h1>List of Schools</h1>\n    6| \n >> 7|     <%= name %>\n    8| \n    9| </div>\n    10| \n\nname is not defined",
  "path": "/Users/mnelson/Documents/Mike Files 2/Personal/My Design Musings/sails/test-project/views/schools/index.ejs"
}
{
“stack”:“ReferenceError:/Users/mnelson/Documents/Mike Files 2/Personal/MyDesign Musings/sails/test project/views/schools/index.ejs:7\n 5学校列表\n 6\n>>7\n 8\n 9\n 10\n\n评估时未定义名称(/usr/local/lib/node_modules/sails/node_modules/ejs locals/node_modules/ejs/lib/ejs.js:237:14),:30:109)\n在eval时(eval at(/usr/local/lib/node_modules/sails/node_modules/ejs locals/node_modules/node_modules/ejs/node_modules locals/node_modules/ejs/ejs/e\n at/usr/local/lib/node_modules/sails/node_modules/ejs/ejs/lib/ejs.js:250:15\n at Object.exports.render(/usr/local/lib/node_modules/sails/node_modules/ejs locals/node_modules/ejs/ejs/ejs.js:288:13)\n at Object.exports.renderFile(/usr/local/lib/node_modules/sails/node_modules/ejs locals/node_modules/ejs/ejs/lib/ejs.js:318:20)\n在SailsView.modules.exports[作为引擎](/usr/local/lib/node_modules/sails/node_modules/ejs locals/index.js:85:7)\n在SailsView.View.render(/usr/local/lib/node/node_modules/node/node_modules/node_modules/@sailshq/View.js\n在Function.app.render(/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/application.js:561:10)\n在ServerResponse.res.render(/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/response.js:845:7)\n在ServerResponse.response.response.res.view(/usr/local/lib/node_modules/sails/hooks/views/views/views/res\n在serveView(/usr/local/lib/node_modules/sails/lib/hooks/views/onRoute.js:61:20)\n在routeTargetFnWrapper(/usr/local/lib/node_modules/sails/lib/router/bind.js:181:5)\n在回调(/usr/local/lib/node_modules/sails/node_modules/node_modules/@sailshq/express/lib/router/index.js:164:37)\n在param(/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:138:11)\n在pass(/usr/local/lib/node_modules/sails/node_modules/sailshq/express/lib/router/index.js:145:5)\n在nextRoute(/usr/local/lib/node_modules/sails/node_modules/node_modules/@sailshq/express/lib/router/index.js:100:7)\n在回调(/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:167:11)\n位于module.exports(/usr/local/lib/node_modules/sails/hooks/cors/clear headers.js:14:3)\n位于routeTargetFnWrapper(/usr/local/lib/lib/node_modules/router/bind.js:181:5)\n位于回调)(/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:164:37)\n在参数处(/usr/local/lib/node_modules/sails/node_modules/@sailshq/express/lib/router/index.js:145:5)”,
“消息”:“/Users/mnelson/Documents/Mike Files 2/Personal/My Design Musings/sails/test project/views/schools/index.ejs:7\n 5 |学校列表\n 6 | \n>>7 | \n 8 | \n 9 | \n 10 | \n\n未定义名称”,
“路径”:“/Users/mnelson/Documents/Mike Files 2/Personal/My Design Musings/sails/test project/views/schools/index.ejs”
}

问题在于您的路线。从中删除
视图:“学校/索引”

'GET /schools': { view: 'schools/index', controller: "SchoolsController", action:"index"},
或者把它改成

'GET /schools': { 'SchoolsController.index' },
为什么?

在路由中,您必须指定要执行的控制器操作或要呈现的视图(如果是静态页面)


res.view
将可选的第一个参数作为视图路径(相对于
views/
)如果没有发送,默认情况下它将呈现
/
视图。

在挖掘文档和查看其他Github示例时,我最终对其进行了排序。Sujan让我走上了正确的道路,但这并没有解决问题。它将返回数据,但随后没有与视图耦合。这是我更新的内容,没有w将整个数据列表都拉了进来。我必须用数据显式地返回视图。我不确定这是否是在Sails中应该采用的方式,但这就是它工作的原因。看起来路线应该处理这个问题,但它没有

控制器文件:

module.exports = {
    index: function(req, res){
      Schools.find().exec(function afterFind(err, schools) {
        if (err) return res.serverError(err);
        console.log(schools);
        return res.view('schools/index', {
          theschools: schools
        });
      });
    }
};
路由文件:

'GET /schools': {controller: 'SchoolsController', action:'index'},
此外,我还需要更新配置中的blueprints.js文件,以消除find方法的限制

defaultLimit: Number.MAX_VALUE
我还将模板引擎更新为pug

extends ../layout

block body
  #theschools
    h1
    |  List of Schools
  p
  table.table
    tr
      th ID
      th Name
      th City
      th Country
    each school in theschools
      tr
        td= school.SID
        td= school.schoolName
        td= school.schoolCity
        td= school.schoolCountry
查看这个Stackoverflow问题和答案有助于我删除控制器中的显式视图声明。

谢谢!它没有解决问题,但它让我找到了正确的路径,通过数据、视图和路由的连接方式进行排序。非常感谢!