我正在使用sails.js从一个支持的应用程序中的newelite洞察中查询数据。我在公共控制器->newelite->number-on-site.js中的函数看起来像
fn: async function (inputs, exits) {
var client = new XMLHttpRequest();
client.open("GET", "https://insights-api.newrelic.com/v1/accounts/<acount_number>/query?nrql=SELECT ...", true);
client.setRequestHeader("Accept", "application/json");
client.setRequestHeader("X-Query-Key", "<my_key>");
client.send();
return exits.success();
}
请注意,is请求作为curl请求工作,因此数据是正确的,现在sails发出以下警告。
warn: Files in the `controllers` directory may be traditional controllers or
action files. Traditional controllers are dictionaries of actions, with
pascal-cased filenames ending in "Controller" (e.g. MyGreatController.js).
Action files are kebab-cased (e.g. do-stuff.js) and contain a single action.
The following file was ignored for not meeting those criteria:
warn: - newrelic.ts
这个字符串到底要说什么?随便在谷歌上搜索这条错误消息都不会发现任何结果。它几乎像我有命名问题一样接缝,但我使用了
sails generate action newrelic.numberOnSite
生成这个控制器,所以我不确定发生了什么。
编辑我的路线如下:
'/newrelic/numberOnSite': 'newrelic.numberOnSite',
以防有帮助。
看起来您正在混合控制器和操作,您应该在此处阅读或继续阅读。
传统控制器使用以controller结尾的pascal大小写,例如NewrelicController.js
,并且如上所述,它是动作(函数(的字典。
动作(函数(的大小写为烤肉串,例如api/controllers/newrelic/number-on-site.js
。
控制器
如果你正在生成一个控制器,那么不要包含在文件夹中。。。
sails generate controller newrelic numberOnSite
然后在你的routes.js
中,你会按照这样的路线。。。
'GET /newrelic/numberOnSite': 'NewrelicController.numberOnSite',
操作
如果您正在生成一个操作,则将这些操作包含在一个文件夹中。。。
sails generate action newrelic/numberOnSite
然后在你的routes.js
中,你会按照这样的路线。。。
'GET /newrelic/numberOnSite': {action:'newrelic/number-on-site'},
与操作集合相比,控制器需要更少的代码,尽管Sails v1.0中引入的操作比控制器更容易维护和调试,因此更受欢迎。