2016-07-07 11 views
0

Ich habe versucht, eine Zeichenfolge zu erstellen, die von JSON verwendet werden kann, um eine Reihe von Daten in MongoDB einzufügen. Beachten Sie, dass die Daten eingegeben werden, alle Informationen korrekt sind.Die gesamte MongoDB-Einfügeanweisung in einer Variablen speichern

"finalString" wird jedoch als eine einzelne Variable behandelt und als "finalString" eingegeben: undefined, und dann weiter in den nächsten Wert, dh undefinedStudent ...., und nicht undefiniert, " Schüler...".

Danach werden die Daten jedoch korrekt eingegeben und mongo behandelt den Rest der Variablen wie eine Anweisung. Wie würde ich dazu kommen, dass mein Skript die Variable als eine vollständige Anweisung erkennt?

mclient.connect(url[0], function(err, db) { 
    var dataToJSONFormat = ""; 
    for(var i = 0; i < properties.length; i++) { 
     dataToJSONFormat += properties[i] + " : '" + values[i] + "'"; 
     if(i < properties.length - 1) dataToJSONFormat += ", "; 
    } 

    write("OrderData: {" + JSON.stringify(dataToJSONFormat) + "}"); 
    var finalString = dataToJSONFormat; 
    db.collection(url[1]).insert(
     { 
      OrderData : {finalString} 
     } 
    ); 
    console.log(dataToJSONFormat); 
    console.log("Data input successful"); 
    db.close(); 
}); 

Antwort

0

In JavaScript müssen Sie das Objekt nicht aus einer Zeichenfolge generieren. Sie können einfach die Objektliteralnotation wie unten verwenden.

mclient.connect(url[0], function(err, db) { 
    var data = { OrderData:{} } 
    for(var i = 0; i < properties.length; i++) { 
     //this does the trick. You can assign key values to object on the fly. using obj[key] = value 
     data.OrderData[properties[i]] = values[i]; 
    } 
    db.collection(url[1]).insert(data); 
    console.log("Data input successful"); 
    db.close(); 
}); 

Überprüfen Sie diese jsFiddle, die das Konzept zeigt.

Verwandte Themen