Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Mongoose似乎阻止了Raspberry Pi上的node.js应用程序_Node.js_Mongodb_Mongoose_Raspberry Pi - Fatal编程技术网

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

Mongoose似乎阻止了Raspberry Pi上的node.js应用程序,node.js,mongodb,mongoose,raspberry-pi,Node.js,Mongodb,Mongoose,Raspberry Pi,我有一个mongoosefind命令,大约需要4秒钟才能完成(应用程序正在Raspberry Pi上运行)。此外,我需要每隔100ms将数据保存到数据库,并发出一个事件 在执行find命令之前,事件发射和保存将正常运行。然后它完全停止(事件发射和保存),直到find命令完成。我尝试在find命令之前、回调内部以及需要保存和发出数据时输出一些文本。在调用find命令和它的回调函数之间没有输出任何内容 据我所知,在调用回调函数之前,node.js应该可以执行其他操作。应用程序在Raspberry P

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

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

据我所知,在调用回调函数之前,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);
  });

});
查找命令代码:

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命令中使用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
});

Mongoose应该能够同时处理多个命令。考虑到您运行它的平台(MongoDB是否也在您的RaspPi上运行?),这可能是一个资源匮乏的问题。您是否使用索引来加速查询?是的,MongoDB正在RPI上运行。我认为我没有使用索引。我更新了问题以包含查找查询的代码。如果查询导致饥饿问题,使用索引可能会解决您的问题。我尝试将index:true添加到架构中的value1,但没有更改任何内容。我误解了什么吗?可能没有,但只是为了确保可以从Mongo shell运行
db.COLLECTIONNAME.getIndexes()
,以查看是否正确创建了索引。我想知道是不是平台动力不足,还是锁定导致了问题。看见