javascript - Node.js - Mongodb - Mongoose / 无法将数组字符串传递到 $push feild
问题描述
所以我试图将每个数组的不同索引推送到 $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',
'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
// })
}
});
在这次通话中
{$push: {db_index :{ timeStamp: epochTime , status: false , error: error.toString()}
我希望能够将 db_index 更改为数组中的每个,但它始终默认为实际单词 db_index
我似乎无法弄清楚如何在没有失败的情况下将字符串传递给这个调用
有效的调用看起来像这样
{$push: {'services.0.ICMP_Linux1':{ timeStamp: epochTime , status: false , error: error.toString()} }},
一切都在数据库端工作,当通过此调用手动传递时,它可以工作。
解决方案
您可以使用计算属性名称:
{$push: {[db_index] :{ timeStamp: epochTime , status: false , error: error.toString()} } }
推荐阅读
- c# - C# 程序从命令行打开 Word docx(不是 doc),在 Jenkins 中失败
- django - Django ORM相关管理器为过滤器添加默认值
- types - 进入
vs Iterator 用于在线算法 - spring-boot - 无法自动接线。找不到“InstructionRepository”类型的 bean
- java - 用于 VSCode 调试器的 Tomcat 在步骤期间未显示变量值
- excel - 我可以用列标题词开始一个范围吗?
- javascript - 媒体对象不响应包含对象的 cookie
- excel - VBA 中的 VLookup 函数 - 根据名称值返回部门值
- macos - 使用 Charles Proxy 时,某些带有 SSL 的进程/站点无法连接
- mapstruct - MapStruct:未映射源属性上的嵌套属性和 ReportingPolicy.ERROR 问题