1

mongoose を使用して mongoDB で動的スキーマを作成しようとしています。次のコードを使用しています

var http = require('http');
var mongoose = require('mongoose'); 
var data = '';
var options = { 
   host: '127.0.0.1', 
   port: 1000, 
   path: '/service',
}; 
var dataDB = mongoose.createConnection('mongodb://localhost/dataDB');
var Schema = mongoose.Schema;
var dataSchema = new Schema({id:String},{strict:false});

http.get(options, function(res) { 
    if (res.statusCode == 200) { 

        res.on('data', function (chunk) { 
            data += chunk;
        });

        res.on('end', function (chunk) { 
            console.log(data);
            var obj = JSON.parse(data);
            var dataLoaddata = dataDB.model('dataSchema', dataSchema, 'data_Load');

            for(var i=0;i<3;i++) {
                console.log(obj.empDetails[i].empName);
                var data1 = 'name';
                var item1 = dataDB.model('data_Load', dataSchema);
                item1.update( { 'id' : i },{data1 : obj.empDetails[i].empName}, { upsert: true }, function (err, numberAffected, raw) {
                    if (err) return handleError(err);
                    console.log('The number of updated documents was %d', numberAffected);
                    console.log('The raw response from Mongo was ', raw);
                });
            }
        });
    } else { 
        console.log("The site is down!"); 
    }
}).on('error', function (e) { 
    console.log("There was an error: " + e.message); 
});

以下は、特定のサービスから得た応答です

{
    empDetails: [
        {
            empId: "1",
            empName: "Manoj"
        },
        {
            empId: "2",
            empName: "kumar"
        },
        {
            empId: "3",
            empName: "hello"
        }
    ]
}

次のように、更新操作でキー名を動的に作成しようとしています

var data1 = 'name';
var item1 = dataDB.model('data_Load', dataSchema);
item1.update( { 'id' : i },{`data1` : obj.empDetails[i].empName}, { upsert: true }, function (err, numberAffected, raw){
                    if (err) return handleError(err);
                    console.log('The number of updated documents was %d', numberAffected);
                    console.log('The raw response from Mongo was ', raw);
                });
            }

しかし、変数は解決されず、列として挿入されません (つまり、data1 の値が渡されません)。「data1」として挿入するだけです。値を渡す必要があります。誰でもこの問題を解決するのを手伝ってくれますか?

4

0 に答える 0