Javascript 遍历RowPacketData(从节点js中的mysql查询返回的结果)
案例是,我有代码从MySQL获取产品名称和图像路径,所以我在查询的返回中获取RowPacketData,如下所示:Javascript 遍历RowPacketData(从节点js中的mysql查询返回的结果),javascript,mysql,node.js,api,loops,Javascript,Mysql,Node.js,Api,Loops,案例是,我有代码从MySQL获取产品名称和图像路径,所以我在查询的返回中获取RowPacketData,如下所示: [ RowDataPacket { Id: 1, Heading: 'Banner 1', Banner_Description: 'This is Banner 1 Description', Image_Name: '1596019684532_command3.png' }, RowDataPacket { Id: 2, H
[ RowDataPacket {
Id: 1,
Heading: 'Banner 1',
Banner_Description: 'This is Banner 1 Description',
Image_Name: '1596019684532_command3.png' },
RowDataPacket {
Id: 2,
Heading: 'Banner 2',
Banner_Description: 'This is Banner 1 Description',
Image_Name: '1596019684538_command4.png' } ]
现在,我想将“Image\u Name”附加到类似“var/www/html/Image\u Name”的内容中,并将其发送到前端。为每个图像名称实现此逻辑的最佳方法是什么。
注意:我不想进入循环。您可能想向前端发送一个JSON数组。因此,您需要一些代码来预先设置每个
Image\u Name
元素的路径。如果您的数组位于input
中,这样的方法可能会奏效
function prependPath (input, path = 'var/www/html/') {
for (let i=0; i<input.length; i++) {
const item = input[i]
item.Image_Name = path + item.Image_Name
}
return input
然后使用类似于
res.json(prependPath(input))
(如果您使用的是Express)的方法调用函数。您“不想进入循环”吗?请回答您的问题以解释您的限制。程序员通常使用循环来处理数据数组。为什么不在select语句中预先添加路径?像从表中选择“/var/path”+table.image?它发送不必要的数据,但我看不到其他方法可以避免循环(可以用递归来解决,但在这种情况下,它会很奇怪)
function prependPath (input, path = 'var/www/html/') {
input.forEach (item => item.Image_Name = path + item.Image_Name)
}
return input
}