【发布时间】:2020-03-16 19:58:58
【问题描述】:
我正在为我的应用程序使用 Mongoose 5.7.8,但文本搜索未返回任何结果。
这是一个架构/模型:
import mongoose, { Document, Schema } from 'mongoose';
import { Moment } from 'moment';
import { IUser } from './IUser.model';
import mongooseMoment from 'mongoose-moment';
mongooseMoment(mongoose);
export interface IProfile extends Document {
given_name: string;
family_name: string;
nickname: string;
name?: string;
picture?: string;
locale?: string;
updated_at?: Moment;
email?: string;
email_verified?: string;
sub: string;
user: IUser['_id'];
bySub(sub: string): any;
}
export const ProfileSchema: Schema = new Schema({
given_name: {type: Schema.Types.String, required: true},
family_name: {type: Schema.Types.String, required: true},
nickname: {type: Schema.Types.String, required: true},
name: {type: Schema.Types.String, required: false, unique: false},
picture: {type: Schema.Types.String, required: false, unique: false},
locale: {type: Schema.Types.String, required: false, unique: false},
updated_at: {type: 'Moment', required: false, unique: false},
email: {type: Schema.Types.String, required: false, unique: false},
email_verified: {type: Schema.Types.String, required: false, unique: false},
sub: {type: Schema.Types.String, required: true, unique: true, index: true},
user: {type: Schema.Types.ObjectId, ref: 'User'}
});
ProfileSchema.query.bySub = function (sub: string) {
return this.where({sub});
};
ProfileSchema.index({'given_name': 'text', 'family_name': 'text', 'nickname': 'text'});
export default mongoose.model<IProfile>('Profile', ProfileSchema);
这是一个正在搜索配置文件的控制器:
const criteria = 'a';
const profiles: IProfile[] = await Profile.find(
{
$text:
{
$search: criteria,
}
}
);
不幸的是,profiles 始终为空,即使存在符合条件的文档。我可能做错了什么?
【问题讨论】:
标签: javascript node.js mongodb typescript mongoose