2016-07-07 69 views
0

我一直在试图创建一个可用于JSON的字符串来将一组数据插入到MongoDB中。请注意,正在输入数据,所有信息都是正确的。但是,“finalString”被视为一个单独的变量,并被输入为“finalString”:undefined,然后继续进入下一个值,即undefinedStudent ....,而不是未定义的“,学生...”。在一个变量中保存整个MongoDB插入语句

然而,然后,数据输入正确,mongo将其余的变量视为一个语句。我怎么会让我的脚本将变量识别为一个完整的语句。

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,显示的概念。

相关问题