2016-06-30 13 views
0

Ich lerne Knoten und ich benutze Postman, um diese Anfrage mit Parametern im Körper auszuführen.node.js - Schlechte Reihenfolge in POST-Anfrage mit Postman

Für den Router: router.post ('/ locations', ctrlLocations.locationsCreate); hier ist die Steuerung:

module.exports.locationsCreate = function (req, res) { 
    Loc.create({ 
     name: req.body.name, 
     address: req.body.address, 
     facilities: req.body.facilities.split(","), 
     coords: [parseFloat(req.body.lng), parseFloat(req.body.lat)], 
     openingTimes: [{ 
      days: req.body.days1, 
      opening: req.body.opening1, 
      closing: req.body.closing1, 
      closed: req.body.closed1, 
     },{ 
      days: req.body.days2, 
      opening: req.body.opening2, 
      closing: req.body.closing2, 
      closed: req.body.closed2, 
     }] 
    }, 
    function(err, location){ 
     if(err){ 
      sendJSONresponse(res, 400, err); 
     } else{ 
      sendJSONresponse(res, 201, location); 
     } 
    }); 
}; 

Hier können Sie mein DB-Modell für die Standorte "finden Sie unter:

var mongoose = require('mongoose'); 

var openingTimeSchema = new mongoose.Schema({ 
    days: {type: String, required: true}, 
    opening: String, 
    closing: String, 
    closed: {type: Boolean, required: true} 
}); 

var reviewSchema = new mongoose.Schema({ 
    author: {type: String, required: true}, 
    rating: {type: Number, required: true, min: 0, max: 5}, 
    reviewText: {type: String, required: true}, 
    createdOn: {type: Date, "default": Date.now} 
}); 

var locationSchema = new mongoose.Schema({ 
    name: {type: String}, 
    address: String, 
    rating: {type: Number, "default":0, min: 0, max: 5}, 
    facilities: [String], 
    coords: {type: [Number], index:'2ndsphere'}, 
    openingTimes: [openingTimeSchema], 
    reviews: [reviewSchema] 
}); 

mongoose.model('Location', locationSchema); 

I unter Verwendung mongodb Konsole kein Problem haben, um einen neuen‚Standort‘zu erstellen , aber ich habe Probleme mit Postman: die gesendete Antwort ändert die Reihenfolge einiger 'Felder' und fügt den 'Öffnungszeiten' unerwünschte IDs hinzu.

Hier ist die x-www-form-urlencoded Anfrage als Bulk-Bearbeitung:

name:Paquito's Bar 
address:41 Lower Brook St, Reading RG1 2AQ, UK 
rating:4.5 
facilities:WiFi, Coffe, Sexy Staff 
lng:-0.9722977 
lat:51.4494778 
days1:Monday -Friday 
opening1:8:00am 
closing1:5:00pm 
closed1:false 
days2:Saturday - Sunday 
opening2:10:00am 
closing2:12:00pm 
closed2:false 

Und hier das Ergebnis:

{ 
    "__v": 0, 
    "name": "Paquito's Bar", 
    "address": "41 Lower Brook St, Reading RG1 2AQ, UK", 
    "_id": "5774ecf8bcdead7c368a7648", 
    "reviews": [], 
    "openingTimes": [ 
    { 
     "days": "Monday -Friday", 
     "opening": "8:00am", 
     "closing": "5:00pm", 
     "closed": false, 
     "_id": "5774ecf8bcdead7c368a764a" 
    }, 
    { 
     "days": "Saturday - Sunday", 
     "opening": "10:00am", 
     "closing": "12:00pm", 
     "closed": false, 
     "_id": "5774ecf8bcdead7c368a7649" 
    } 
    ], 
    "coords": [ 
    -0.9722977, 
    51.4494778 
    ], 
    "facilities": [ 
    "WiFi", 
    " Coffe", 
    " Sexy Staff" 
    ], 
    "rating": 0 
} 

ich bin für die API hier die Erstellung von Dokumenten, und als Sie können sehen, dass die Bestellung schlecht ist, und ich will _id nicht in den Öffnungszeiten: Ich erzwinge eher die ID-Erstellung, wenn über Code als automatische Erstellung benötigt wird.

Vielleicht gibt es eine bessere Möglichkeit, Postman zu verwenden ... Jede Hilfe wird nützlich sein.

Vielen Dank im Voraus!

+0

definieren glaube nicht, Ihr Problem mit Postbote ist - seine Mungo/Mongo, der die _id hinzuzufügt. Siehe http://stackoverflow.com/questions/9598505/mongoose-retrieving-data-without-id-field – MrWillihog

+0

Ich kann Mungo nicht verwerfen, aber ich denke zumindest Mongo ist nicht, wie diese Abfrage: 'code' // speichern Sie Abfrage nach neuen Standort db.locations.save ({ \t Name: 'Starcups', \t Adresse: '125 High Street, Reading, RG6 1PS', \t Bewertung: 3, \t Einrichtungen: [ 'Heiße Getränke ',' Essen ',' Premium wifi '], \t coords: [-0.9690884, 51.455041], \t openingTimes: [{ \t \t Tage: 'Montag - Freitag', \t \t Eröffnung: '07.00', \t \t Schließung: '07.00', \t \t geschlossen: false \t }, { \t \t Tage: 'Samstag', \t \t Eröffnung: '8.00', \t \t Schließung: '05.00', \t \t geschlossen: fals e \t}, { \t \t Tage: 'Sonntag', \t \t geschlossen: true \t}] }) 'code' ausführt – AtomicNation

+0

sehr gut habe ich den Beitrag, den Sie erwähnen, zu lesen, und OK, können Sie Ausschließen, wenn Sie finden, aber die Sache hier ist, ich bin Harmonie mit dem Db-Modus, wo Öffnungszeiten sind Eigenschaften eines Ortes, so dass sie Teil des Dokuments sein sollten, und nicht Filialdokumente (wenn ich es gut mongoose IDs für zu schaffen jedes Dokument, aber sollte nicht erstellen, wenn wir über das "Objekt" selbst sprechen). Panzer sowieso! – AtomicNation

Antwort

0

Die Reihenfolge der "Felder" ist NICHT in Javascript Javascript und Sie sollten nie davon abhängig sein.

Über die "IDs" - Sie sagten zu Mungo, dass in openingTimes Array eines anderen Schemas ist, daher verhält es sich damit.

Wenn openingTimes verschachteltes Dokument ist, sollten Sie es als verschachteltes Dokument, zum Beispiel wie dies Ich

var locationSchema = new mongoose.Schema({ 
    name: {type: String}, 
    address: String, 
    rating: {type: Number, "default":0, min: 0, max: 5}, 
    facilities: [String], 
    coords: {type: [Number], index:'2ndsphere'}, 
    openingTimes: [{ 
     days: {type: String, required: true}, 
     opening: String, 
     closing: String, 
     closed: {type: Boolean, required: true} 
    }], 
    reviews: [reviewSchema] 
}); 
+0

Richtig, mit Öffnungszeiten, aber ich denke, es muss weg sein zu: 1) Vermeiden Sie ID erstellen und 2) speichern Sie das Dokument mit der Reihenfolge im Modell festgelegt. – AtomicNation

+0

@AtomicNation - Schema ist Sammlung in MongoDB. Sammlung kann nicht ohne _id in MongoDB sein. Und weder MongoDB weder Javascript nicht die Reihenfolge der Felder GARAUNTEE. Noch nie. Je. Daher solltest du auch nicht, oder du würdest enttäuscht sein :). Google es - "mongodb Bestellfelder" – libik

+0

Ich sehe ... das ist nur komisch zu mir, aber ich denke, dass, während es funktioniert, alle glücklich sind! Vielen Dank für Ihre Hilfe! – AtomicNation