2016-04-08 7 views
1

Derzeit entwickle ich eine API mit Segeln js + MongoDB für eine mobile App. Ich möchte mehrere Daten speichern, die von der mobilen App senden, und ich fange es über req Parameter (als Objekt) in meiner Controller-Funktion.So speichern Sie mehrere Daten mit Objektparametern Anfrage, sofort in Segel js

Einige Teile meiner Controller-Code wie folgt aussehen:

var contactData = req.allParams().Contact; 
looping.. { 
    Contact.create(contactData[index]).exec(function addContact(err,createdContact){ }); 
} 

Können Sie mir sagen, wie der beste Weg für das auf die Datenbank mehrere Kontaktdaten speichern Looping zu implementieren?

Grüße, Argi Danu.

+1

Sind Sie ernsthaft daran gedacht, die Daten über Anfrage-Parameter zu senden. Ich würde vorschlagen, es als POST-Daten zu senden. –

+0

Ja, ich meine es ernst ..: D req.allParams() gibt den Wert aller Parameter in der Anfrage gesendet, einschließlich der Anfrage Körper. Meine Kontaktdaten werden über den Anfragetext (POST) von der mobilen App gesendet, nicht vom URL-Pfad oder der Abfragezeichenfolge (GET). Meine Frage ist, wie der beste Weg, Schleifenprozess (asynchron) in diesem Kontakt Daten (Objekt) zu implementieren, um das in Datenbank zu speichern? –

Antwort

1

Okay, Also, wenn Sie sich der ‚Name‘ Attribute für die Anforderungsparameter sind, dann können Sie einfach die create-Methode als verwenden -

var contactData = req.allParams(); 
var name = contactData.name // attribute name 
var number = contactData.number // attribute name 

Und danach einfach das Erstellen rufen Methode

Contact.create({name : name, number :number}).exec(functionaddContact(err,createdContact){ 

    // DO Something 
}); 

Aber wenn Sie ausschließlich für Loops verwenden möchten, um alle Daten von Anforderungsparameter zu bekommen, Betrachten Sie die folgende Szenario -

Konvertieren Sie die Kombination von erf para Meter in ein JSON-Objekt, indem Sie die Kontaktdaten in [] als

var json = '[' + contactData +']'; 

und dann mit dem folgenden Code Anhängen die Parameterwerte aus dem JSON-Objekt erstellt bekommen als

for (var property in obj) { 

    if (obj.hasOwnProperty(property)) { 

     if(typeof obj[property] === 'string') { 

     console.log(property); // provides the property name 
     console.log(obj[property]); // provides the value of the property 
    } 
    } 

dies hilft Vielleicht folgt. Es arbeitete mit SQL-Datenbanken

+0

Also muss ich eine for-Schleife verwenden und die create-Funktion im Loop-Prozess aufrufen? meine Kontaktdaten in req params, sollte wie folgt aussehen: { "Kontakt": [{ "fullname": "fullname_for_first_data", "Telefon": "phone_for_first_data" }, { "fullname": "fullname_for_second_data", "Telefon": "phone_for_second_data" }, ... und so weiter, bis die letzten Daten (mehrere Daten) ] } Meine Frage ist, wie der beste Weg Prozess (asynchron zu implementieren looping) in diesem Kontaktobjekt, um das in die Datenbank zu speichern? –

+1

Okay, dann wäre [Async] (https://github.com/caolan/async) das Richtige für dich. Ich denke, dass man die erf Daten in Form bekommen - 'var Kontakt = [{ "fullname": "fullname_for_first_data", "Telefon": "phone_for_first_data"}, { "fullname": "fullname_for_second_data",„Telefon ": "phone_for_second_data"}]' Und dann verwenden Sie den forEachOf() -Methode der Asynchron-Modul 'async.forEachOf (obj, Funktion (Wert, Schlüssel, Rückruf) { // rufen Sie die Insert-Methode in hier für den Wert Parameter Callback(); }); ' –

+0

Okay. Du hast meinen Standpunkt, parth. Danke für Ihre Antwort. Jetzt benutze ich async.map() um diese Kontaktdaten zu finden und zu speichern. –

Verwandte Themen