Ассоциации Sails.js "многие ко многим" вызывают ошибку при создании и заполнении

Когда я пытаюсь связать одну коллекцию с другой коллекцией, используя ассоциацию «многие ко многим», я получаю следующую ошибку:

Использование парусов-монго: TypeError: Cannot read property 'where' of undefined at _afterFetchingJunctorRecords (/Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/waterline-cursor/cursor/populateBuffers.js:131:35) at /Users/grant/Sites/sails/test/node_modules/sails-mongo/lib/collection.js:103:5 at /Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/cursor.js:172:16 at commandHandler (/Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/cursor.js:720:16) at /Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/db.js:1874:9 at Server.Base._callHandler (/Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/connection/base.js:453:41) at /Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/connection/server.js:481:18 at MongoReply.parseBody (/Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:68:5) at null.<anonymous> (/Users/grant/Sites/sails/test/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/connection/server.js:439:20) at emit (events.js:95:17)

Использование парусов-postgresql: TypeError: Cannot convert null to object at hasOwnProperty (native) at utils.object.hasOwnProperty (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/lib/utils.js:28:14) at /Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/where.js:261:11 at Array.forEach (native) at WhereBuilder.complex (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/where.js:178:36) at complexWhere (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/index.js:245:16) at find (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/index.js:85:23) at Cursor.populateBuffers [as $populateBuffers] (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/lib/adapter.js:547:31) at Cursor.run (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-cursor/cursor/cursor.js:45:8) at runJoins (/Users/grant/Sites/sails/test/node_modules/sails-postgresql/node_modules/waterline-cursor/index.js:51:10)

Тестовый проект

Я создал образец приложения Sails, чтобы продемонстрировать проблему и позволить другим тестировать/отлаживать ее: https://github.com/gnestor/sails-assoications-issue

Чтобы воспроизвести:

Попробуйте создать новую запись с ассоциацией (я пытался использовать консоль Sails, Blueprints API и внутри контроллеров):

Event.create({source: 'http://domain.com/event/1', posted_by: {source: 'http://domain.com/feed/1'}}).exec(console.log)

Event.create({source: 'http://domain.com/event/3', venue: {source: 'http://domain.com/feed/2'}}).exec(console.log)

Event.create({source: 'http://domain.com/event/2', reposted_by: [{source: 'http://domain.com/feed/2'}, {source: 'http://domain.com/feed/4'}]}).exec(console.log)

Результат

Вы заметите, что первые два работают (ассоциации «один ко многим»), а третья — нет (ассоциация «многие ко многим»). Я тестировал это различными способами (используя консоль Sails, Blueprints API и внутренние контроллеры).

Стоит отметить, что он работает с парусами-диском, но не работает с парусами-монго, парусами-postgresql или парусами-mysql, поэтому я, вероятно, делаю что-то не так...

Ссылка на задачу по парусам-монго: https://github.com/balderdashy/sails-mongo/issues/227 Ссылка на выпуск по парусам-postgresql: https://github.com/balderdashy/sails-postgresql/issues/130


person senornestor    schedule 12.01.2015    source источник
comment
Аналогичное сообщение Stackoverflow: stackoverflow.com/questions/26199645/   -  person senornestor    schedule 12.01.2015