2016-07-10 9 views
1

Ich arbeite mich durch eine Migration von Parse.com zu Parse Server und kann keine Daten aktualisieren. GET funktioniert problemlos, ohne zuvor vorhandenen Code, der mit Parse.com arbeitete, zu ändern.Parse Server gibt "{" code ": 111," error "zurück:" Dies ist keine gültige Datei "}" für PUT, aber nicht GET. Warum?

ich eine Variante dieses für jede PUT:

{ 
    method:"PUT" 
    path:"/parse/classes/Order/WzxHamIlOq" 
    status:400 
    text:"{"code":111,"error":"This is not a valid File"}" 
} 

Ein perfekt zu /parse/classes/Order/WzxHamIlOq Arbeiten bekommen.

Ich habe die 111-Code nachgeschlagen und das einzige Ding in der Dokumentation, die darauf verweist, scheint nicht zutreffen. Hier

ist der Code, der nicht funktioniert:

OrderController.updateOrder = function(req, res) { 
     var order = req.body; 
     superagent 
      .put(config.API_URL + '/classes/Order/' + order.objectId) 
      .set('X-Parse-Application-Id', config.keys.appId) 
      .set('X-Parse-Master-Key', config.keys.master) 
      .send({ 
       'orderNo': order.orderNo, 
       'poNO': order.poNO, 
       'invoiceNo': order.invoiceNo, 
       'dueDate': order.dueDate, 
       'dateIn': order.dateIn, 
       'jobName': order.jobName, 
       'notes': order.notes, 
       'salesmanID': { 
        __type: 'Pointer', 
        className: 'Salesman', 
        objectId: order.salesmanID.objectId 
       }, 
       'costReview': order.costReview, 
       'inProduction': order.inProduction, 
       'invoice': order.invoice, 
       'paid': order.paid, 
       'commission': order.commission, 
       'productionNotes': order.productionNotes, 
       'proof': { 
        __type: 'File', 
        name: order.proof.name 
       }, 
       'tags': order.tags, 
       'artUrl': order.artUrl 
      }) 
      .end(function(err, results){ 
       if(err) { 
        res.status(500).send({error: err}); 
       }else if(results.badRequest){ 
         console.error(results.error); 
         res.status(results.status).send({error: results.error}); 

       }else { 
        res.send(results.body); 
       } 
      }); 
    }; 

Hier ist die GET auf dem gleichen Weg, das funktioniert:

OrderController.getOrderInfo = function(req, res) { 
     superagent 
      .get(config.API_URL + '/classes/Order/' + req.params.id) 
      .set('X-Parse-Application-Id', config.keys.appId) 
      .set('X-Parse-Master-Key', config.keys.master) 
      .query('include=salesmanID,imprintTypeID,customerID') 
      .query('where') 
      .end(function(err, results) { 
       if(err) { 
        console.log(err); 
       } else if(results.badRequest){ 
        console.error(results.error); 
        res.status(results.status).send({error: results.error}); 

       }else { 
        res.send(results.body); 
       } 
      }); 
    }; 

Ja, mit Super-Agent anstelle der sdk ist dumm . Ja, ich habe diesen Code geerbt.

Kann mir jemand in die richtige Richtung zeigen?

+1

ich glaube, das Problem wäre, wenn Sie versuchen, Datei zu speichern In der Reihe würde ich versuchen, alle Zeilen zu entfernen, die Sie zu speichern versuchen und herauszufinden, welcher den Fehler zurückgibt ... oder vielleicht müssen Sie Hauptschlüssel wegen der Berechtigungen verwenden? Ist die Datei größer als 20 MB? –

+0

Danke für den Kommentar. Ich bin in der Lage, mit nur einer einzigen Eigenschaft zu speichern. Wird von hier aus arbeiten. – RyanDagg

Antwort

0

Das Problem besteht darin, dass das Parse DB-Migrationstool keine Unterstützung für die Übertragung von Dateien aus Parse unterstützt.

Es wird eine aktive Ausgabe auf Github, aber keine offizielle Lösung noch: https://github.com/ParsePlatform/parse-server/issues/8

Diese Linien werden, was dazu führen, das Problem:

'proof': { 
    __type: 'File', 
    name: order.proof.name 
},