Node.js - Mongodb - Mongoose / 无法将数组字符串传递到 $push feild
Posted
技术标签:
【中文标题】Node.js - Mongodb - Mongoose / 无法将数组字符串传递到 $push feild【英文标题】:Node.js - Mongodb - Mongoose / Can't pass Array string into $push feild 【发布时间】:2020-03-20 03:57:49 【问题描述】:所以我试图将每个数组的不同索引推送到 $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() ,
一切都在数据库端工作,当通过这个调用手动传递时它工作正常。
【问题讨论】:
【参考方案1】:您可以使用计算属性名称:
$push: [db_index] : timeStamp: epochTime , status: false , error: error.toString()
【讨论】:
谢谢,这是我搜索文档数小时但找不到的解决方案。只需括号 [ ] -_-以上是关于Node.js - Mongodb - Mongoose / 无法将数组字符串传递到 $push feild的主要内容,如果未能解决你的问题,请参考以下文章
夺命雷公狗---node.js---19之项目的构建在node+express+mongo的博客项目4mongodb在项目中的基本引入
夺命雷公狗---node.js---20之项目的构建在node+express+mongo的博客项目5mongodb在项目中实现添加数据