Frolipon / mosaico

Badsender builder - Responsive Email Template Editor based on mosaico http://builder.badsender.com/
http://agence.badsender.com/production/email-builder/
GNU General Public License v3.0
2 stars 2 forks source link

Problème de sauvegarde #101

Closed Frolipon closed 7 years ago

Frolipon commented 7 years ago

Hello,

J'ai un message d'erreur de sauvegarde lorsque je tente d'enregistrer un email à partir d'un template suivant sur la prod:

Quand je créé un email et que je tente de sauvegarder, j'ai un message d'erreur si l'email comprend une des sections suivantes: bloc 3 colonnes ou bloc 4 colonnes

fourcolumnsblock threecolumnsblock

Le problème est que le message d'erreur dans la console est assez succint: image

Il s'agit peut-être d'un problème dans le code de ces sections, mais je ne vois pas où. Pourrais-tu m'orienter sur la nature de l'erreur? Ou voir si l'erreur se situe ailleurs?

Hiswe commented 7 years ago

@Frolipon Il y a un problème pour l'enregistrement des données en base. Je vais regarder de plus près ton template

Côté front la réponse du serveur est la suivante :

{
  "name":"MongoError",
  "message":"The dotted field 'thirdColumnOptions.buttonVisible' in 'data.mainBlocks.blocks.0.thirdColumnOptions.buttonVisible' is not valid for storage.",
  "driver":true,
  "index":0,
  "code":57,
  "errmsg":"The dotted field 'thirdColumnOptions.buttonVisible' in 'data.mainBlocks.blocks.0.thirdColumnOptions.buttonVisible' is not valid for storage.",
  "status":500
}

Tout les logs de l'erreur côté serveur :

POST /editor/58c0de405e28cd0012d6be55
error handling 500
{ MongoError: The dotted field 'thirdColumnOptions.buttonVisible' in 'data.mainBlocks.blocks.3.thirdColumnOptions.buttonVisible' is not valid for storage.
    at Function.MongoError.create (/app/node_modules/mongodb-core/lib/error.js:31:11)
    at toError (/app/node_modules/mongodb/lib/utils.js:114:22)
    at /app/node_modules/mongodb/lib/collection.js:1049:67
    at /app/node_modules/mongodb-core/lib/connection/pool.js:455:18
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickDomainCallback (internal/process/next_tick.js:122:9)
 name: 'MongoError',
 message: 'The dotted field \'thirdColumnOptions.buttonVisible\' in \'data.mainBlocks.blocks.3.thirdColumnOptions.buttonVisible\' is not valid for storage.',
 [stack]: [Getter/Setter],
 driver: true,
 index: 0,
 code: 57,
 errmsg: 'The dotted field \'thirdColumnOptions.buttonVisible\' in \'data.mainBlocks.blocks.3.thirdColumnOptions.buttonVisible\' is not valid for storage.',
 status: 500 }
Trace: { MongoError: The dotted field 'thirdColumnOptions.buttonVisible' in 'data.mainBlocks.blocks.3.thirdColumnOptions.buttonVisible' is not valid for storage.
    at Function.MongoError.create (/app/node_modules/mongodb-core/lib/error.js:31:11)
    at toError (/app/node_modules/mongodb/lib/utils.js:114:22)
    at /app/node_modules/mongodb/lib/collection.js:1049:67
    at /app/node_modules/mongodb-core/lib/connection/pool.js:455:18
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickDomainCallback (internal/process/next_tick.js:122:9)
 name: 'MongoError',
 message: 'The dotted field \'thirdColumnOptions.buttonVisible\' in \'data.mainBlocks.blocks.3.thirdColumnOptions.buttonVisible\' is not valid for storage.',
 driver: true,
 index: 0,
 code: 57,
 errmsg: 'The dotted field \'thirdColumnOptions.buttonVisible\' in \'data.mainBlocks.blocks.3.thirdColumnOptions.buttonVisible\' is not valid for storage.',
 status: 500 }
   at /app/server/index.js:314:15
   at Layer.handle_error (/app/node_modules/express/lib/router/layer.js:71:5)
   at trim_prefix (/app/node_modules/express/lib/router/index.js:310:13)
   at /app/node_modules/express/lib/router/index.js:280:7
   at Function.process_params (/app/node_modules/express/lib/router/index.js:330:12)
» 9 Mar 2017 11:50:04.236  327 <158>1 2017-03-09T04:50:03.945021+00:00 heroku router - - at=info method=POST path="/editor/58c0de405e28cd0012d6be55" host=badsender.herokuapp.com request_id=f93d11d8-67db-41c7-8540-e0901da0ebac fwd="180.183.152.36" dyno=web.1 connect=0ms service=850ms status=500 bytes=619 protocol=http
   at next (/app/node_modules/express/lib/router/index.js:271:10)
   at Layer.handle_error (/app/node_modules/express/lib/router/layer.js:67:12)
   at trim_prefix (/app/node_modules/express/lib/router/index.js:310:13)
   at /app/node_modules/express/lib/router/index.js:280:7
   at Function.process_params (/app/node_modules/express/lib/router/index.js:330:12)
   at next (/app/node_modules/express/lib/router/index.js:271:10)
   at next (/app/node_modules/express/lib/router/route.js:121:14)
   at process._tickDomainCallback (internal/process/next_tick.js:129:7)
POST - /editor/58c0de405e28cd0012d6be55 500
Hiswe commented 7 years ago

@Frolipon la solution trouvée :

remplacer toutes les références du type :

firstColumnOptions.imageVisible

par

firstColumnOptionsImageVisible

Pas de point en séparateur mais une majuscule

Frolipon commented 7 years ago

Comme vu sur Skype, le bug est résolu en dégommant le firstColumnOptions.imageVisible=true etc. des propriétés des blocs.

Ce serait un bug qui serait intéressant de remonter à Mosaico non?

Hiswe commented 7 years ago

Je ne pense pas que ce soit un bug.

Plutôt qu'il faille définir les valeurs par défaut d'un ensemble de widget dans cet ensemble et non pas là où il est instancé

Hiswe commented 7 years ago

@Frolipon J'ai mis à jour le template “témoin” avec une partie sur ce que tu veux

https://github.com/goodenough/mosaico/tree/february-2017/templates/sub-themes

Frolipon commented 7 years ago

Pour moi ça reste un bug, car il y a bien la possibilité dans les exemples du Versafix de définir pour un bloc ou pour une section une valeur par défaut, et pas seulement au niveau widget. Mais difficile à dire vu qu'on ne connaît pas les spec définies.

Pour info, le lien vers le template témoin ne fonctionne pas ;-)

Hiswe commented 7 years ago

@Frolipon Ah oui la branche a été supprimée

https://github.com/goodenough/mosaico/blob/master/templates/sub-themes/template-sub-themes.html

Si tu peux me donner l'endroit où c'est déclaré dans versafix je suis preneur :)

Pour pouvoir corriger ce problème d'enregistrement il existe bien une solution, mais il faudra passer par des script pour mettre à jour la DB. À voir donc

Hiswe commented 7 years ago

@Frolipon il y a d'autres choses à faire sur ce ticket ?

Frolipon commented 7 years ago

Nop, c'est fermé :-)