Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
Javascript Sails.js将密钥和数据流传输到_Javascript_Angularjs_Node.js_Sails.js_Node Streams - Fatal编程技术网

Javascript Sails.js将密钥和数据流传输到

Javascript Sails.js将密钥和数据流传输到,javascript,angularjs,node.js,sails.js,node-streams,Javascript,Angularjs,Node.js,Sails.js,Node Streams,我有一个有角度的前端,它将数据从sails后端(使用sails mysql适配器)填充到ui网格中。此数据集很大,在页面显示包含任何数据之前需要一段时间才能加载 我掌握了从sails启动并运行流媒体的基本知识: findAllStream: function (req, res) { Model.stream().pipe(res); } 到目前为止,它将每个单独的数据段从模型流到前端。我正在使用角双簧管来消耗这条流: vm.myData = []; var obj = {}; var

我有一个有角度的前端,它将数据从sails后端(使用sails mysql适配器)填充到ui网格中。此数据集很大,在页面显示包含任何数据之前需要一段时间才能加载

我掌握了从sails启动并运行流媒体的基本知识:

findAllStream: function (req, res) {
    Model.stream().pipe(res);
}
到目前为止,它将每个单独的数据段从模型流到前端。我正在使用角双簧管来消耗这条流:

vm.myData = [];
var obj = {};
var count = 0;
Oboe({
    url: '/api/model/findAllStream',
    pattern: '*',
    start: function(stream) {
        // handle to the stream
        vm.stream = stream;
        vm.status = 'started';
    },
    done: function(parsedJSON) {
        vm.status = 'done';
    }
}).then(function() {
    // promise is resolved
    console.log('done');
}, function(error) {
    // handle errors
    console.log('error');
}, function(node) {
    // node received
    switch (count) {
        case 0:
            obj['id'] = node;
            break;
        case 1:
            regObj['property'] = node;
            break;
        case 2:
            regObj['function'] = node;
            break;
    }

    if (++count === 3) {
        vm.myData.push(regObj);
        count = 0;
        obj = {};
    }
});
从本质上讲,数据节点的顺序似乎是相同的,所以我只需跟踪接收到的节点数量,并以此方式构建对象。然后,我将每个对象推送到一个数组中,以便在uigrid中使用

例如,find()返回的数据为:

[
{
  id: 1,
  property: foo,
  function: bar
},
{
  id: 2,
  property: stuff,
  function: things
}
]
这适用于角度和uigrid。但有了stream,我只会得到:

1
foo
bar
2
stuff
things
这并不理想,尤其是当模型发生变化时。是否有方法发送密钥而不仅仅是值?或者从流中发送JSON?比如:

  id: 1,
  property: foo,
  function: bar
  id: 2,
  property: stuff,
  function: things

谢谢

结果是我用错了双簧管。我将匹配模式更改为“{id}”,一切都很好

Oboe({
    url: '/api/model/findAllStream',
    pattern: '{id}',
    start: function(stream) {
        // handle to the stream
        vm.stream = stream;
        vm.status = 'started';
    },
    done: function(parsedJSON) {
        vm.status = 'done';
    }
}).then(function() {
    // promise is resolved
    console.log('done');
}, function(error) {
    // handle errors
    console.log('error');
}, function(node) {
    // node received
    vm.gridOptions.data.push(node);
});