【问题标题】:Error trying to do search for records matching criteria with MongoDB尝试使用 MongoDB 搜索匹配条件的记录时出错
【发布时间】:2021-05-16 19:19:16
【问题描述】:

我正在参加关于 Udemy 的培训课程,它已经编写了后端代码,因为该课程纯粹是关于前端开发的。它使用我创建的一个非常简单的 MongoDB 数据库。我确定我的计算机上安装了 MongoDB 版本 4.0.10,以防万一。尝试对匹配记录执行查询时,出现以下错误:

UnhandledPromiseRejectionWarning:MongoError:FieldPath 字段名称可能不以“$”开头。 在 MessageStream.messageHandler (I:\DEV\Training\React For the rest of Us\backend-api\node_modules\mongodb\lib\cmap\connection.js:268:20) 在 MessageStream.emit (events.js:315:20) 在 processIncomingData (I:\DEV\Training\React For the rest of Us\backend-api\node_modules\mongodb\lib\cmap\message_stream.js:144:12) 在 MessageStream._write (I:\DEV\Training\React For the rest of Us\backend-api\node_modules\mongodb\lib\cmap\message_stream.js:42:5) 在 writeOrBuffer (internal/streams/writable.js:358:12) 在 MessageStream.Writable.write (internal/streams/writable.js:303:10)
在 TLSSocket.ondata (internal/streams/readable.js:719:22) 在 TLSSocket.emit (events.js:315:20) 在 addChunk (internal/streams/readable.js:309:12) 在 readableAddChunk (internal/streams/readable.js:284:9) (节点:51960)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。到 在未处理的 Promise 拒绝时终止节点进程,使用 CLI 标志 --unhandled-rejections=strict(参见 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝编号:2) 在查看后端代码后,我发现以下代码用于执行查询/搜索,并且我确实注意到各个地方都有 $ 符号。

Post.search = function(searchTerm) {
  return new Promise(async (resolve, reject) => {
    if (typeof(searchTerm) == "string") {
      let posts = await Post.reusablePostQuery([
        {$match: {$text: {$search: searchTerm}}},
        {$sort: {score: {$meta: "textScore"}}}
      ])
      resolve(posts)
    } else { 
      reject()
    }
  })
}

究竟出了什么问题,我该如何解决?

【问题讨论】:

  • $s 不是问题所在。你在哪里看到错误?转储应该向您显示引发错误的文件和行号。
  • 我在帖子中添加了其余的错误消息。

标签: javascript mongodb


【解决方案1】:

这里有同样的错误。在主应用程序中使用 axios 从 react 中搜索 - 非常简单(应该是)。这表明在我的情况下,当尝试从 react 搜索“打开搜索模式”时,mongodb 服务器崩溃并出现上述错误:
f:\PrgsReact\SimplePost\backend-api\node_modules\mongodb\lib\cmap\connection.js:268 回调(新 MongoError(文档));
MongoError:FieldPath 字段名称可能不以“$”开头。
等等。
我试图改变 mongodb 和 axios 的 npm ver 等。谢谢。

【讨论】:

  • 当我删除以下代码行时,它前面的逗号对我有用:{$sort: {score: {$meta: "textScore"}}}
猜你喜欢
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
  • 2021-11-21
  • 2021-01-07
  • 2020-06-30
相关资源
最近更新 更多