环回访问模型数据并使用socketio发出

时间:2016-10-28 02:43:17

标签: angularjs node.js loopbackjs strongloop

我在后端使用Loopback作为后端和Angularjs。要求是根据一些间隔向所有连接的客户端发送数据。

这是我的server.js文件:

var loopback = require('loopback');
var boot = require('loopback-boot');   
var app = module.exports = loopback();

app.start = function() {
  return app.listen(function() {
    app.emit('started');
    var baseUrl = app.get('url').replace(/\/$/, '');
    console.log('Web server listening at: %s', baseUrl);
    if (app.get('loopback-component-explorer')) {
      var explorerPath = app.get('loopback-component-explorer').mountPath;
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

boot(app, __dirname, function(err) {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module) {
    //app.start();
    app.io = require('socket.io')(app.start());
    app.io.on('connection', function(socket){
      console.log('a user connected');
       var runs = app.models.runs;
       setInterval(function(){
          //  socket.emit('model', Model.find({limit : 500})); 
        }, 2000);

      socket.on('disconnect', function(){
        console.log('user disconnected');
      });
    });
  }

});

我试图访问我的模型并发出它,但我无法弄清楚如何访问模型数据。

1 个答案:

答案 0 :(得分:1)

好吧,好像你已经从代码中得到了你想要的东西,不知道是什么问题。根据要求,您可以将代码更改为此代码,它应该可以正常工作:

var runs = app.models.runs;
setInterval(function(){
  runs.find({limit : 500})).then(function(results){
    socket.emit('model', results);
  }).catch(console.error);
}, 2000);

这里需要注意的事情。

  • 不要忘记正确的错误处理。
  • results变量将是一个包含500个文档的数组。对我来说看起来很大,它可能会有糟糕的表现。小心一点。