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」として挿入するだけです。値を渡す必要があります。誰でもこの問題を解決するのを手伝ってくれますか?