2017-12-28 5 views
0

Ich benutze feathersjs (mit websockets) und sequelize auf meinem Server und aktualisiere auf Buzzard-Version. Dieser Haken ist auf meinem Server und verwendet, um feine vor dem Upgrade zu arbeiten: `` `feathers-sequelize funktioniert nicht mehr mit `` `rohe: false``` nach dem Upgrade auf Buzzard

module.exports = function (options = {}) { 
    return function (hook) { 
    if (hook.params.query && hook.params.query.include) { 
     const joinModel = hook.app.service('favorites_points').Model; 
     const pointsModel = hook.app.service('points').Model; 
     hook.params.sequelize = { 
     raw: false, 
     include: [{ 
      model: joinModel, 
      as: 'FavPoints', 
      include: [{ 
      model: pointsModel 
      }] 
     }] 
     }; 
     delete hook.params.query.include; 
    } 
    return Promise.resolve(hook); 
    }; 
}; 

Nach dem Upgrade, wenn vom Client mit genannt: api.service('users').get(2, {query: {include: true}})

bekomme ich diesen Fehler (btw: wenn ich gehe aus dem inneren include: [{ model: pointsModel }] bleibt gleichen Fehler):

index.js?3d97:235 Uncaught (in promise) Error: Maximum call stack size exceeded 
    at hasBinary (/home/usr/api_server/node_modules/has-binary2/index.js:28:20) 
    at hasBinary (/home/usr/api_server/node_modules/has-binary2/index.js:35:11) 
    at hasBinary (/home/usr/api_server/node_modules/has-binary2/index.js:56:59) 
    at hasBinary (/home/usr/api_server/node_modules/has-binary2/index.js:56:59) 
    at hasBinary (/home/usr/api_server/node_modules/has-binary2/index.js:56:59) 
    at hasBinary (/home/usr/api_server/node_modules/has-binary2/index.js:56:59) 
    at hasBinary (/home/usr/api_server/node_modules/has-binary2/index.js:56:59) 
    at hasBinary (/home/usr/api_server/node_modules/has-binary2/index.js:56:59) 
convert @ index.js?3d97:235 
(anonymous) @ client.js?8dbe:71 
Socket.onack @ socket.js?0183:312 
Socket.onpacket @ socket.js?0183:236 
(anonymous) @ index.js?cea2:21 
Emitter.emit @ index.js?a675:133 
Manager.ondecoded @ manager.js?0ad8:332 
(anonymous) @ index.js?cea2:21 
Emitter.emit @ index.js?a675:133 
Decoder.add @ index.js?5f3d:241 
Manager.ondata @ manager.js?0ad8:322 
(anonymous) @ index.js?cea2:21 
Emitter.emit @ index.js?a675:133 
Socket.onPacket @ socket.js?5eac:456 
(anonymous) @ socket.js?5eac:273 
Emitter.emit @ index.js?a675:133 
Transport.onPacket @ transport.js?64e8:145 
Transport.onData @ transport.js?64e8:137 
ws.onmessage @ websocket.js?7304:147 
Promise rejected (async) 
queryMe @ Nearby.vue?9ccf:48 
boundFn @ vue.runtime.esm.js?ff9b:189 
click @ Nearby.vue?dc3e:39 
invoker @ vue.runtime.esm.js?ff9b:1979 
Vue.$emit @ vue.runtime.esm.js?ff9b:2489 
click @ quasar.esm.js?8bfb:3118 
boundFn @ vue.runtime.esm.js?ff9b:188 
invoker @ vue.runtime.esm.js?ff9b:1979 
fn._withTask.fn._withTask @ vue.runtime.esm.js?ff9b:1777 

Als ich raw: false, kommentieren sie es richtig Ausgang gibt. Ich überprüfte, aber in meiner 'vor Upgrade-Version' funktioniert die Abfrage auch, wenn ich raw: false, verlasse, aber die Ausgabestruktur ist anders (verschachtelter) wenn sie hinzugefügt wird, so dass ich denke, dass Sequelize einfach umgangen wird und wahrscheinlich gibt es keine eifrig-Laden etc. So würde Ich mag die Verwendung raw: false,

nach Package.json für den Server aktualisieren:

"@feathersjs/authentication": "^2.1.0", 
"@feathersjs/authentication-jwt": "^1.0.1", 
"@feathersjs/authentication-local": "^1.0.2", 
"@feathersjs/authentication-oauth2": "^1.0.2", 
"@feathersjs/configuration": "^1.0.1", 
"@feathersjs/errors": "^3.2.0", 
"@feathersjs/express": "^1.1.2", 
"@feathersjs/feathers": "https://github.com/feathersjs/feathers.git#master", 
"@feathersjs/socketio": "^3.0.1", 
"feathers-authentication-hooks": "^0.1.5", 
"feathers-hooks-common": "git://github.com/feathers-plus/feathers-hooks-common.git#master", 
"feathers-sequelize": "^3.0.0", 
"sequelize": "^4.28.6", 

Bevor Package.json auf dem Server aktualisieren:

"feathers": "^2.2.3", 
"feathers-authentication": "^1.3.0", 
"feathers-authentication-hooks": "^0.1.5", 
"feathers-authentication-jwt": "^0.3.2", 
"feathers-authentication-local": "^0.4.4", 
"feathers-authentication-oauth2": "^0.3.2", 
"feathers-blob": "^1.3.1", 
"feathers-configuration": "^0.4.2", 
"feathers-errors": "^2.9.2", 
"feathers-hooks": "^2.1.2", 
"feathers-hooks-common": "^3.10.0", 
"feathers-rest": "^1.8.1", 
"feathers-seeder": "^1.0.10", 
"feathers-sequelize": "^2.4.0", 
"feathers-socketio": "^2.0.1", 
"sequelize": "^4.23.1", 

Meine Frage : Warum macht ich t arbeitet nicht mehr mit raw: false, und wie kann ich das lösen?

Antwort

0

Nach dem Hinzufügen eines dehydrate hook (als after Hook) ist die Ausgabe wie erwartet. Es ist mir nicht klar, warum vor der Aktualisierung kein Problem war.

Verwandte Themen