Mongoose似乎阻止了Raspberry Pi上的node.js应用程序

时间:2015-04-13 09:57:02

标签: node.js mongodb mongoose raspberry-pi

我有一个Mongoose find-command,大约需要4秒钟才能完成(应用程序在Raspberry Pi上运行)。此外,我需要每100毫秒将数据保存到数据库并发出一个事件。

事件发射和保存运行正常,直到执行find-command。然后它完全停止(事件发射和保存),直到find-command完成。我尝试在find-command之前,回调内以及需要保存和发出数据时输出一些文本。调用find-command它的回调函数之间没有输出任何内容。

据我所知,node.js应该可以在调用回调函数之前执行其他操作。应用程序在Raspberry Pi上运行是否重要?我还没有读过有关MongoDB和Raspberry Pi问题的其他人... 还有什么可能是问题?

发出和保存数据的代码:

// New data received from socket connection
socket.on('new-data', function(data){

  console.log('New data'); // Never output between 'Starting find-command' and 'Completed find-command'

  someEvent.emit('new-data');

  var data = new Data({
    value1: 1234,
    value2: 5678
  });

  data.save(function(err){
    if(err) return handleErrror(err);
  });

});

find-command代码:

console.log('Starting find-command');
Data.find({value1: { $gt: min, $lt: max }}, function(err, data){
  console.log('Completed find-command');
  // Do something with data
});

更新

我尝试在find-command中使用lean和limit,它显着提高了性能(从4s到500ms)。不幸的是,这还不够好......

Data.find({value1: { $gt: min, $lt: max }}).limit(500).lean().exec(function(err, data){
  console.log('Completed find-command');
  // Do something with data
});

0 个答案:

没有答案