2016-07-07 4 views
0

JSONで使用可能な文字列を作成して、MongoDBにデータセットを挿入しようとしました。データが入力されていて、すべての情報が正しいことに注意してください。MongoDBのinsert文を1つの変数に保持

しかし、 "finalString"は個々の変数として扱われており、 "finalString"として入力されています:未定義で、undefinedStudent ....のように未定義ではなく、学生..."。

その後、データは正しく入力され、mongoは残りの変数を文のように扱います。変数を1つのステートメント全体として認識させるようにスクリプトを作成するには、どうすればよいでしょうか。

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(); 
}); 

答えて

0

JavaScriptでは、文字列からオブジェクトを生成する必要はありません。以下のようなオブジェクトリテラル表記を使用することができます。

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(); 
}); 

これはコンセプトを示すjsFiddleにチェックしてください。

関連する問題