先决条件:
已使用集合创建数据库posts它的架构如下:
module.exports = function(mongoose){
var Schema = mongoose.Schema;
var postSchema = new Schema({
postID: String,
title: String,
description: String
});
mongoose.model('post', postSchema, 'posts');
postSchema.index({title: 'text'});
};
通过 API 处理的节点路由器:
apiRouter.get('/api/searchPosts', function(req, res, next){
postModel.find(
{ $text : { $search : req.query.text } },
{ score : { $meta: "textScore" } }
)
.sort({ score : { $meta : 'textScore' } })
.exec(function(err, posts) {
if(posts){
res.json({
posts : posts
});
} else {
res.send('Post does not exist');
}
});
});
我想要实现的目标:
我想在我的领域开辟一个领域posts表称为title可搜索文字。
我的堆栈:
MongoDB、NodeJS(使用 Mongoose)、Angular
我的做法:
正如先决条件中提到的,我添加了以下行:
postSchema.index({title: 'text'});
此外,创建集合后,我在终端中运行以下命令:
db.posts.createIndex({"title":"text"})
问题:
当我从 URL 访问它时,它最初可以工作,但几周后,它停止工作(我得到“帖子不存在”,没有进行任何更改!)。为了让它再次工作,我必须删除集合并创建一个新集合并运行命令:
db.posts.createIndex({"title":"text"})
然后它开始工作几周等等。
我做错了什么?我没有看到这几周内发生的情况的趋势。我已经被这个问题困扰了几个星期,所以如果有人可以提供帮助,我将不胜感激。
谢谢,
沙彦