javascript - 尝试使用 MongoDB 搜索匹配条件的记录时出错
问题描述
我正在参加关于 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) at writeOrBuffer (internal/streams/writable.js:358:12) at MessageStream.Writable.write (内部/流/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/流/可读.js:284:9)(节点:51960)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict
(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(rejection id: 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()
}
})
}
到底出了什么问题,我该如何解决?
解决方案
这里同样的错误。在主应用程序中使用 axios 从 react 中搜索 - 非常简单(应该是)。这表明在我的情况下,当尝试从 react 搜索“打开搜索模式”时,mongodb 服务器崩溃并出现上述错误:
f:\PrgsReact\SimplePost\backend-api\node_modules\mongodb\lib\cmap\connection.js: 268 callback(new MongoError(document));
MongoError: FieldPath field names may not start with '$'.
etc..
我试图更改 mongodb 和 axios 的 npm ver 等。谢谢。
推荐阅读
- actions-on-google - 谷歌主页操作同步不适用于有效的 json 响应
- ios - “UIKit.UIKitThreadAccessException:'UIKit 一致性错误:您正在调用 UIKit 方法......”在 Xamarin.iOS 上的应用升级期间
- python - 如何在 Python 中使用 re 模块实现这个 $letters(*)
- javascript - 在 div 中创建了一个按钮
- javascript - 如何正确设置热图中的最大值 setData?
- node.js - 如果嵌套数组中只有子文档元素匹配,则返回文档
- ruby-on-rails - 是否可以在 Rails 之外使用关注点
- google-apps-script - 谷歌表单+云功能集成
- reverse-engineering - PEView 和 HxD 的结果是不同的。可能吗?
- object - 无法在 uft 的对象存储库中找到对象