Исключение из обратного вызова setTimeout: {stack: [Getter]} и ошибка Mongo

Я получаю следующее исключение:

=> Meteor server restarted
I20130820-00:17:58.852(3)? Exception from setTimeout callback: { stack: [Getter] } MongoError: $or requires nonempty array
I20130820-00:17:58.852(3)?     at Object.Future.wait (/home/alexei/.meteor/tools/4010e5731d/lib/node_modules/fibers/future.js:326:15)
I20130820-00:17:58.853(3)?     at _.extend._nextObject (packages/mongo-livedata/mongo_driver.js:540)
I20130820-00:17:58.853(3)?     at _.extend.forEach (packages/mongo-livedata/mongo_driver.js:570)
I20130820-00:17:58.853(3)?     at _.extend.map (packages/mongo-livedata/mongo_driver.js:582)
I20130820-00:17:58.853(3)?     at _.extend.fetch (packages/mongo-livedata/mongo_driver.js:606)
I20130820-00:17:58.853(3)?     at _.each.Cursor.(anonymous function) [as fetch] (packages/mongo-livedata/mongo_driver.js:444)
I20130820-00:17:58.854(3)?     at MongoConnection.findOne (packages/mongo-livedata/mongo_driver.js:362)
I20130820-00:17:58.854(3)?     at _.extend.findOne (packages/mongo-livedata/collection.js:225)
I20130820-00:17:58.854(3)?     at _.extend.findOne (packages/collectionFS/collectionFS_common.js:4)
I20130820-00:17:58.855(3)?     at _.extend.checkQueue (packages/collectionFS/collectionFS_filehandlers.js:95)
I20130820-00:17:58.855(3)?     - - - - -
I20130820-00:17:58.855(3)?     at Object.toError (/home/alexei/.meteor/packages/mongo-livedata/86ae77f282/npm/node_modules/mongodb/lib/mongodb/utils.js:110:11)
I20130820-00:17:58.855(3)?     at Cursor.nextObject.self.queryRun (/home/alexei/.meteor/packages/mongo-livedata/86ae77f282/npm/node_modules/mongodb/lib/mongodb/cursor.js:634:54)
I20130820-00:17:58.856(3)?     at Cursor.close (/home/alexei/.meteor/packages/mongo-livedata/86ae77f282/npm/node_modules/mongodb/lib/mongodb/cursor.js:903:5)
I20130820-00:17:58.856(3)?     at Cursor.nextObject.commandHandler (/home/alexei/.meteor/packages/mongo-livedata/86ae77f282/npm/node_modules/mongodb/lib/mongodb/cursor.js:634:21)
I20130820-00:17:58.856(3)?     at Db._executeQueryCommand (/home/alexei/.meteor/packages/mongo-livedata/86ae77f282/npm/node_modules/mongodb/lib/mongodb/db.js:1658:9)
I20130820-00:17:58.856(3)?     at Server.Base._callHandler (/home/alexei/.meteor/packages/mongo-livedata/86ae77f282/npm/node_modules/mongodb/lib/mongodb/connection/base.js:378:41)
I20130820-00:17:58.856(3)?     at Server.connect.connectionPool.on.server._serverState (/home/alexei/.meteor/packages/mongo-livedata/86ae77f282/npm/node_modules/mongodb/lib/mongodb/connection/server.js:468:18)
I20130820-00:17:58.857(3)?     at MongoReply.parseBody (/home/alexei/.meteor/packages/mongo-livedata/86ae77f282/npm/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:68:5)
I20130820-00:17:58.857(3)?     at Server.connect.connectionPool.on.server._serverState (/home/alexei/.meteor/packages/mongo-livedata/86ae77f282/npm/node_modules/mongodb/lib/mongodb/connection/server.js:426:20)
I20130820-00:17:58.857(3)?     at EventEmitter.emit (events.js:96:17)

Подскажите, в чем причина проблемы?

У меня 0.6.5 метеор, 0.6.6 мрт, 0.10.13 узел и 1.3.2 нпм.

Кстати, само приложение работает нормально :)

Пожалуйста, порекомендуйте.

Спасибо,

Алексей


person joystick    schedule 19.08.2013    source источник
comment
Похоже, у вас есть селектор $or mongo с пустым массивом. Кажется, он находится в пакете CollectionFS. Я посмотрел код на GitHub (коллекцияFS_filehandlers.js, строка 95) $or: queryFilehandlersExists. 2 возможности: либо вы вызываете функцию API с неверными параметрами, либо в коде пакета есть ошибка.   -  person saimeunt    schedule 20.08.2013


Ответы (1)


Запрос внутри блока кода Meteor.setTimeout содержит ключевое слово $or, которое содержит пустой массив. У вас должно быть как минимум два предмета для вашей операции.

Если у вас возникли проблемы/используете какой-либо способ создания запроса $or, вы можете обновить свой код с помощью этого блока кода, чтобы мы могли помочь в дальнейшем.

person Tarang    schedule 20.08.2013