【发布时间】:2021-04-20 21:43:56
【问题描述】:
我已经检查了一些链接来比较两个数组,但是
我想比较并检查数据库中存在的值是否与文件名中存在的值相似
问题是 fileName 不是,并且数组,我通过 For Each 从另一个函数将值传递给它,因此它可以是任何值
fileName= JavaScript
fileName= Java
fileName= NodeJs
fileName= ReactJs
fileName= Oops
但singleProduct 是数组,这就是我使用 for 循环从中提取名称的原因。
代码:
function checkDoc(data, childProduct, fileName, pathName, req, res) {
return new Promise((resolve, reject) => {
Document.findAll({
raw: true,
where: {
product_id: childProduct.id,
},
})
.then((productDoc) => {
productDoc.forEach((singleProduct) => {
if (singleProduct.name === fileName) {
//print matched value
} else {
//print unmatched value
}
});
})
.catch(function (err) {
return reject(
getFailureResponseJson("Can't be added please try again :) " + err)
);
});
});
}
singleProduct.name 中存在的值
Oops
Java
JavaScript
值存在于文件名中
Oops
Java
JavaScript
NodeJs
ReactJs
需要这样的输出
Matched Value:
Oops
Java
JavaScript
Unmatched Value:
NodeJs
ReactJs
【问题讨论】:
-
您应该以复数形式命名包含数组的变量(
filenames、productDocs)。您说filename中存在多个值,但您还说“fileName不是数组” - 我无法确定它是filenames的数组还是不是你的描述?此外,“butsingleProductis array”似乎是错误的 -productDoc是一个数组,singleProduct不是。 -
嗨@Bergi我已经更新了问题请看一下:)
-
等等,你打了多次
checkDoc?是否传递多个childProduct对象,是否要发出多个数据库请求? -
是的@Bergi,但通过检查我的 checkDoc 中不存在的相同数据
标签: javascript node.js promise sequelize.js nodes