node.js - 填充猫鼬后如何执行全文搜索?
问题描述
我正在构建一个类似克隆的 Twitter,并且我正在尝试构建搜索系统来对所有推文数据执行一般文本查找。每条推文都存储了对作者的引用,因此我必须先调用 populate 才能使用 .find()
我试过这个无济于事:
const searchTerm = req.query.query;
Tweet.find()
.limit(10)
.populate("author")
.find( { $text: { $search: `${searchTerm}` } })
.then(data => {
res.json({ tweets: data });
})
.catch((err) => console.log(err));
这是Tweet
模型
const TweetSchema = new Schema({
content: {
type: String,
required: true,
},
category: {
type: String,
required: false,
},
comments: [Comment.schema],
author: { type: Schema.Types.ObjectId, ref: "user", required: true },
replies: {
type: Number,
default: 0,
},
likes: {
type: Number,
default: 0,
},
date: {
type: Date,
default: Date.now,
},
});
TweetSchema.index({ "$**": "text" });
module.exports = Tweet = mongoose.model("tweet", TweetSchema);
解决方案
推荐阅读
- javascript - 纯 CSS 中 Flex 中选项卡项的选项卡滑块动画
- javascript - 您如何访问 RTCSctpTransportStats?
- flutter - 如何通过阅读孩子约束使一行的孩子具有相同的高度
- c# - 针对错误请求的 .NET Core WepApi 模式
- azureml - 在模型部署期间包含其他文件(第 2 部分)
- unit-testing - 测试引发错误的异步函数时未获得覆盖
- javascript - Express - Firebase - 检查未定义的 req.cookie.__session 而不抛出错误
- latex - Latex - 显示文本而不是图像的图像
- r - 将 NHL JSON 数据导入 R 并格式化
- java - Java (Silenium) - 导入语句完成但是方法不可见