【问题标题】:Compare Value from Database using Node JS [duplicate]使用 Node JS 比较数据库中的值 [重复]
【发布时间】: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

【问题讨论】:

  • 您应该以复数形式命名包含数组的变量(filenamesproductDocs)。您说filename 中存在多个值,但您还说“fileName 不是数组” - 我无法确定它是filenames 的数组还是不是你的描述?此外,“but singleProduct is array”似乎是错误的 - productDoc 是一个数组,singleProduct 不是。
  • 嗨@Bergi我已经更新了问题请看一下:)
  • 等等,你打了多次checkDoc?是否传递多个childProduct 对象,是否要发出多个数据库请求?
  • 是的@Bergi,但通过检查我的 checkDoc 中不存在的相同数据

标签: javascript node.js promise sequelize.js nodes


【解决方案1】:

您可以尝试将值存储到 2 个数组中。

...
const matchedValues = [];
const unmatchedValues = [];

if (singleProduct.name === fileName) {
  matchedValues.push(fileName)
} else {
  unmatchedValues.push(fileName)
}
...

// Print 

【讨论】:

  • 我所有的价值观都在其他部分
猜你喜欢
  • 1970-01-01
  • 2014-02-13
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2020-10-19
  • 2016-03-08
相关资源
最近更新 更多