【发布时间】: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