Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
backbone.js集合和石墨碳_Backbone.js_Collections_Models_Graphite_Graphite Carbon - Fatal编程技术网

backbone.js集合和石墨碳

backbone.js集合和石墨碳,backbone.js,collections,models,graphite,graphite-carbon,Backbone.js,Collections,Models,Graphite,Graphite Carbon,我正在编写一个backbone.js“应用程序”,并希望将graphite/carbon的json输出直接映射到一些主干模型/集合 一般来说,json输出如下所示: [ { 'target': 'some.string.1', 'datapoints': [ [ val1, timestamp1 ], [ val2, timestamp2 ]... ] }, { 'target': 'some.string.2', 'datapoints': [ [

我正在编写一个backbone.js“应用程序”,并希望将graphite/carbon的json输出直接映射到一些主干模型/集合

一般来说,json输出如下所示:

[
  {
    'target': 'some.string.1',
    'datapoints': [ [ val1, timestamp1 ], [ val2, timestamp2 ]... ]
  },
  {
    'target': 'some.string.2',
    'datapoints': [ [ val1, timestamp1 ], [ val2, timestamp2 ]... ]
  },
  ...
]
我定义了一个简单的模型和集合,以便:

class Measurement extends Backbone.Model
  defaults:
    id: undefined
    val: undefined

class Measurements extends Backbone.Collection
  model: Measurement
    initialize: (model, options) ->
      if options.metric
        @metric = options.metric
    url: -> 
      '/?target=' + @metric
    parse: (data,xhr) ->
      if _.size(data) == 1
        return _(data[0]['datapoints']).map( (d) ->
          m = {}
          m['id'] = new Date(0)
          m['id'].setUTCSeconds( d[1] )
          m['val'] = d[0]
          m
        )
      undefined
正如您所看到的,我重载id作为每个度量的时间戳,并且特定“度量”的所有度量都存储在名为measurements的集合下

我还硬编码了它,因此它实际上只适用于一个度量集合(即json中的“target”)

我的问题是如何在一次调用中实现多个度量(集合)的收集的最佳/优雅/灵活。ie graphite支持对其“目标”使用通配符,因此对
/?target=some.string.*
的ajax请求将带回所有匹配的目标和数据点(如json示例)。然后,我会将其呈现给一个视图,在该视图中,我会呈现(比如)累积数据或绘制所有测量值与时间的关系

我正在考虑使用另一个集合(我们称之为集合),其中包含许多度量值。我希望能够执行类似于
Set.fetch()
的操作,从服务器获取所有匹配的度量值,并让集合从单个ajax请求创建多个度量值集合


有人对如何实施这一点有什么建议吗?或者是一种更好的表示此模型/收集层的方法?

而不是直接回答您的问题-您看过吗?-它是graphite的javascript仪表板,使用
backbone.js
。您可能会看到它是如何在那里实现的,并借用/窃取一些想法

作为旁注——根据我构建另一个beast的经验(很抱歉插上了插头,但提供上下文很重要),将通配符目标与graphite匹配存在一些困难。主要原因是您不知道返回了多少个目标。例如,当您希望其中一个目标在图形上具有红色,或者希望添加类似注释器的目标(绘制为无限以标记基于时间的事件)时,这可能会很棘手。在使用graphite处理通配符和多目标请求时,需要记住一点