2016-02-15 3 views
0

У меня есть схема и подсхема 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); 
      } 

и это возвращает пустой массив. я что-то пропустил?

+0

Я тестирую ваши образцы кода, кажется, хорошо работает в моем локальном тесте ... BTW, какой тип переменной 'schema' в вашем коде? – zangw

+0

Схема - это пример схемы мангуста. var mongoose = require ('mongoose'); var schema = mongoose.Schema; –

+0

это потому, что я вызываю схему (модель) из другого файла? поэтому я фактически экспортирую переменную модель и требую ее в другом файле. поисковый запрос находится в другом файле, отличном от схемы. –

ответ

1

Пожалуйста, убедитесь, что имя коллекции, которое вы хотите запросить, - merchant в MongoDB, которое соответствует названию модели, указанному ниже.

var model = mongoose.model('merchant', Schema); 
+0

О, боже мой, стыдись меня. Спасибо, чувак. Имя моей коллекции не совпадает с моим определением модели. мое имя коллекции - купцы. хотя мне все еще интересно, почему эта модель раньше ничего не делала. –

Смежные вопросы