簡體   English   中英

Mongoose countDocuments 未按預期返回

[英]Mongoose countDocuments not returning as expected

我正在嘗試編寫一個函數來在提交查詢之前查找 mongoose 數據庫中的文檔是否存在。 但是,它一直說該文檔不存在,即使它存在。


/**
 * Determines if a Journal already exists (via ISSN numer)
 * @param {string} data - The ISSN number of the Journal to be checked
 * @return {boolean} - True = journal exists, false it doesnt exist.
 */
async function getJournalByISSN(data) {
  const issn = String(data);
  const docCount = await Journal.countDocuments().or([
    {issn_electronic: issn},
    {issn_print: issn}]);
  let value = false;
  console.log(docCount, value);
  if (docCount != 0) value = true;
  return value;
}

給定數據的 console.log 返回格式正確的 ISSN。 當我調試貓鼬查詢時,它看起來格式良好。

控制台日志

journals.countDocuments {"$or":[{"issn_electronic":"1234-​1234"},{"issn_print":"1234-1234"}]} {}

手動指定搜索字段時,即

{issn_electronic: '1234-1234'}, {issn_print: '1234-1234'}]}

它返回正確的文檔計數值。

有趣的是復制粘貼mongoose的debug,發現字符串中注入了空格

例如

journals.countDocuments {"$or":[{"issn_electronic":"1234- 1234"},{"issn_print":"1234- ​1234"}]} {}

這是隱藏字符的問題

字符串有隱藏字符,無法驗證,

通過替換數據字符串解決了這個問題

data = data.replace(/[\u200c\u200b]/g, '')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM