Javascript 是否可以在不使用外部后端的情况下编写grafana数据源插件?

Javascript 是否可以在不使用外部后端的情况下编写grafana数据源插件?,javascript,json,callback,response,grafana,Javascript,Json,Callback,Response,Grafana,我想写一个不依赖外部后端的grafana数据源插件 我基于简单的json数据源插件构建了我的插件: 我尝试更改datasource.js中的查询函数,如下所示: 原件: query(options) { var query = this.buildQueryParameters(options); if (query.targets.length <= 0) { return this.q.when([]); } return this.b

我想写一个不依赖外部后端的grafana数据源插件

我基于简单的json数据源插件构建了我的插件:

我尝试更改datasource.js中的查询函数,如下所示:

原件:

 query(options) {
    var query = this.buildQueryParameters(options);

    if (query.targets.length <= 0) {
      return this.q.when([]);
    }

    return this.backendSrv.datasourceRequest({
      url: this.url + '/query',
      data: query,
      method: 'POST',
      headers: { 'Content-Type': 'application/json' }
    });
当我实现查询功能并尝试在graphana面板中显示图形时,我收到错误消息:

“undefined不是对象(正在计算'dataList.map')”

不必担心数据格式我尝试了所有方法,但grafana似乎期望得到不同的回报,但我不知道是什么格式

我跟踪了原始实现返回的内容并复制了它,但它不起作用

我相信

this.backendSrv.datasourceRequest({
      url: this.url + '/query',
      data: query,
      method: 'POST',
      headers: { 'Content-Type': 'application/json' }
    });
应该返回类似http响应的内容,但为什么我不能手动返回呢


提前谢谢你的帮助

它看起来需要包装成一个承诺,不能直接返回。它们使用角度$q分量。我让它与返回一起工作:

return this.q(function(resolve, reject) {
    var result = {
      data : [
        {
          "target":"upper_75",
          "datapoints":[
            [622,1450754160000],
            [365,1450754220000]
          ]
        },
        {
          "target":"upper_90",
          "datapoints":[
            [861,1450754160000],
            [767,1450754220000]
          ]
        }
      ]
    }
    resolve(result)
});
通过构造函数中的依赖项注入,您将获得$q:

constructor(instanceSettings, $q, backendSrv) {
this.type = instanceSettings.type;
this.url = instanceSettings.url;
this.name = instanceSettings.name;
this.q = $q;
this.backendSrv = backendSrv;}

如果您有原始插件后端工作,那么在浏览器控制台中查看console.log(this.backendSrv.datasourceRequest({url:this.url+'/query',data:query,method:'POST',headers:{'Content Type':'application/json'}})的输出;在返回之前插入的语句。。。。。必须准确显示query()函数应该返回的内容。谢谢您提供的提示!我查找它,它返回:Object{$$state:Object}$$state似乎是某种角度对象。我正在进一步调查此事,谢谢你的帮助!
constructor(instanceSettings, $q, backendSrv) {
this.type = instanceSettings.type;
this.url = instanceSettings.url;
this.name = instanceSettings.name;
this.q = $q;
this.backendSrv = backendSrv;}