У меня есть схема и подсхема followong, я думаю, что я следил за всем шагом от документа mongoose, но я всегда получаю пустой массив на нем.Mongoose Полнотекстовый поиск возвращает пустой массив
// other libraries
var mongoose = require('mongoose');
var schema = mongoose.Schema;
// product schema
var productSchema = new schema({
title: {type: String},
ingredients: {type: String},
description: {type: String},
banner: [{path: String, fileName: String}],
price: {type: String},
promo: {promotion: {type: Boolean, default: 0}, promoDetail: {type: String, default: null}},
stock: {type: Number, default: 0},
tags: [],
sold: {type: Number, default: 0},
pickOfTheDay: {type: Boolean, default: 0},
shipping: {type: String, default: null},
featured: {type: Boolean, default: 0},
showCounter: {type: Number, default: 0},
createdAt: {type: Date, default: Date.now},
updatedAt: {type: Date, default: Date.now},
seller: {}
});
// merchant schema
var Schema = new schema({
accountName: {type: String},
firstName: {type: String},
middleName: {type: String},
lastName: {type: String},
address: { street: {type: String},
city: {type: String},
province: {type: String},
country: {type: String},
postalCode: {type: String}
},
phone: { phone1: {type: Number},
phone2: {type: Number}
},
email: {type: String},
userType: {type: String, default: "customer"},
password: {type: String},
socialAccounts: { facebook: {id: String, token: String, email: String, name: String},
twitter: {id: String, token: String, displayName: String, username: String},
google: {id: String, token: String, email: String, name: String}
},
products: [productSchema]
});
// creating indexes
Schema.index({
'products.title': "text",
'products.ingredients': "text",
'products.description': "text"
});
var model = mongoose.model('merchant', Schema);
exports.modelExports = function(){
return model;
}
здесь у меня есть следующий документ на моей коллекции
{
"_id" : ObjectId("56b06b7fe61af1081ceea185"),
"accountName" : "Agnes",
"firstName" : "Agnes",
"middleName" : "Monica",
"lastName" : "AgnesMo",
"email" : "[email protected]",
"password" : "$2a$10$wpHVqyw4sFG1.MwtQj6XPOdx5AJ/kyi92I1Z50GrWMlhI97E3ZrpW",
"products" : [
{
"title" : "Sate Maranggi",
"ingredients" : "Daging sapi, kecap, cabai, bawang merah, bawang putih",
"description" : "Sate maranggi enak dan lezat",
"price" : "15000",
"_id" : ObjectId("56b06eae492acbbc1fd070e9"),
"pickOfTheDay" : false,
"sold" : NumberInt(0),
"featured" : true,
"tags" : [
"Sate Maranggi"
],
"stock" : NumberInt(20),
"promo" : {
"promoDetail" : "Beli 2 gratis 1",
"promotion" : true
},
"banner" : [
{
"path" : "D:\\project\\storage\\uploads\\images\\Resep-Cara-Membuat-Sate-Maranggi-Khas-Purwakarta.jpg-1454403246620.jpg",
"fileName" : "Resep-Cara-Membuat-Sate-Maranggi-Khas-Purwakarta.jpg-1454403246620.jpg",
"_id" : ObjectId("56b06eae492acbbc1fd070ea")
}
]
}
],
"userType" : "merchant",
"phone" : {
"phone1" : NumberInt(88888),
"phone2" : NumberInt(999999)
},
"address" : {
"street" : "jl. A.Yani no 23",
"city" : "Jakarta",
"province" : "DKI Jakarta",
"country" : "indonesia",
"postalCode" : "61382"
},
"__v" : NumberInt(1)
}
и это мой поисковый запрос в другом файле
// call the merchant model
var merchantM = require(__base + 'app/models/merchant_m');
var model = merchantM.modelExports();
// text search
model.find({ $text: { $search: "Sate" } }).exec(function(err, docs){
if (err){
res.send(err);
}else{
res.send(docs);
}
и это возвращает пустой массив. я что-то пропустил?
Я тестирую ваши образцы кода, кажется, хорошо работает в моем локальном тесте ... BTW, какой тип переменной 'schema' в вашем коде? – zangw
Схема - это пример схемы мангуста. var mongoose = require ('mongoose'); var schema = mongoose.Schema; –
это потому, что я вызываю схему (модель) из другого файла? поэтому я фактически экспортирую переменную модель и требую ее в другом файле. поисковый запрос находится в другом файле, отличном от схемы. –