Javascript Node.js-Mongodb-Mongoose/Can';t将数组字符串传递到$push feld中
因此,我试图将每个数组的不同索引推入$push调用中,以填充mongodb服务器,但是我无法将调用特定于我尝试访问的数组 数据库中的IP地址和数组名需要设置为初始数组Javascript Node.js-Mongodb-Mongoose/Can';t将数组字符串传递到$push feld中,javascript,node.js,database,mongodb,mongoose,Javascript,Node.js,Database,Mongodb,Mongoose,因此,我试图将每个数组的不同索引推入$push调用中,以填充mongodb服务器,但是我无法将调用特定于我尝试访问的数组 数据库中的IP地址和数组名需要设置为初始数组 //Team IP Info var teamIps = [ '8.8.8.8', '8.8.8.9', '8.8.8.8', '8.8.8.8', '8.8.8.8', ] var boxNames = [ 'Linux1', 'Linux2', 'Windows1
//Team IP Info
var teamIps = [
'8.8.8.8',
'8.8.8.9',
'8.8.8.8',
'8.8.8.8',
'8.8.8.8',
]
var boxNames = [
'Linux1',
'Linux2',
'Windows1',
'Windows2',
'98',
]
这是$push调用的代码
for (let index = 0; index < teamIps.length; index++) {
var hostIn = teamIps[index];
const boxName = boxNames[index];
const liTest = 'services.0.ICMP_Linux1'
var db_base = 'services.0.ICMP_';
var db_index = db_base.concat(boxName);
console.log('Inital : ' + boxName)
//This should work and makes life easier but I cant append the db_index string into the mongoose push call
var result = await session.pingHost(hostIn, function (error, hostIn, sent, rcvd) {
var ms = rcvd - sent;
var db_base = 'services.0.ICMP_';
var db_index = db_base.concat(boxName).toString();
console.log(typeof db_index)
if (error){
var output = hostIn + ": " + error.toString()
Team.findOneAndUpdate(
{ name: name },
{$push: {db_index :{ timeStamp: epochTime , status: false , error: error.toString()} }},
function(err,suc){
if(err){
console.log(err)
}
else{
console.log(hostIn + ' : ' + db_index + " : " + output)
}
});
// res.send({
// result: output
// })
}
else{
var output = hostIn + ": Alive (ms=" + ms + ")"
Team.findOneAndUpdate(
{ name: name },
{$push: {db_index :{ timeStamp: epochTime , status: true , speed: ms} }},
function(err,suc){
if(err){
console.log(err)
}else{
console.log(hostIn + ' : ' + db_index + " : " + output)
}
});
// res.send({
// result: output
// })
}
});
我希望能够将db_索引更改为数组中的每一个,但它始终默认为实际单词db_索引
我似乎不知道如何将字符串传递到此调用中而不失败
一个有效的电话看起来像这样
{$push: {'services.0.ICMP_Linux1':{ timeStamp: epochTime , status: false , error: error.toString()} }},
在数据库端,一切都可以工作,当手动通过此调用传递时,一切都可以工作。您可以使用计算属性名:
{$push: {[db_index] :{ timeStamp: epochTime , status: false , error: error.toString()} } }
谢谢,这是一个解决方案,我在文档中搜索了几个小时,却找不到它。你能回答这个问题吗
{$push: {[db_index] :{ timeStamp: epochTime , status: false , error: error.toString()} } }