2016-02-03 23 views
9

Moim celem jest, aby wypełnić niektóre pola w mongoosastic wyszukiwania, ale jeśli mam następujące kody, to zawsze powrócićW jaki sposób wypełnić na mongoosastycznym?

enter image description here

Oto kod

var mongoose = require('mongoose'); 
var Category = require('./category'); 
var mongoosastic = require('mongoosastic'); 
var Schema = mongoose.Schema; 

var ProductSchema = new Schema({ 
    category: { type: Schema.Types.ObjectId, ref: 'Category', es_schema: Category, es_indexed:true, es_select: 'name'}, 
    name: String, 
    price: Number, 
    image: String 
}); 

ProductSchema.plugin(mongoosastic, { 
    hosts: [ 
    'localhost:9200' 
    ], 
    populate: [ 
    {path: 'category', select: 'name'} 
    ] 
}); 

module.exports = mongoose.model('Product', ProductSchema); 


var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var CategorySchema = new Schema({ 
    name: { type: String, unique: true, lowercase: true} 
}); 

module.exports = mongoose.model('Category', CategorySchema); 

api.js

router.post('/search', function(req, res, next) { 
    console.log(req.body.search_term); 
    Product.search({ 
    query_string: { query: req.body.search_term } 
    }, function(err, results) { 
    if (err) return next(err); 
    res.json(results); 
    }); 
}); 

Co należy zrobić, aby zapełnić pewną kategorię w mangowce?

+0

Czy to działa? Mam podobny problem, gdy podczas wypełniania uzyskuję 0 trafień. Czytałem nad dokumentami wiele razy, ale nie jestem pewien, gdzie popełniłem błąd. Jeśli mógłbyś podać wgląd: http://stackoverflow.com/questions/37758652/mongoosastic-elastic-search-will-not-return-any-hits-when-populating – someoneHere

+0

czy rozwiązujesz ten problem? – Mikhail

Odpowiedz

0

Używasz

populate: [ 
    {path: 'categories', select: 'name'} 
] 

Ale categories w kodzie jest undefined.

Musisz użyć kategorię w miejscu categories jak masz wspomniano klucz jako kategoria w deklaracji schematu

nadzieję, że to rozwiąże problem.

+0

Zmieniłem na kategorię, ale nie zadziałało. –

-1

Edit:

kategoria: {type: Schema.Types.ObjectId, ref: 'Kategoria', es_schema: Kategoria, es_indexed: true, es_select: 'name'}

=> _category: {type: Schema.Types.ObjectId, ref: 'Kategoria'},

i wykorzystanie Populate: .populate ('kategoria _', 'name')

nadzieję, że to pomoże.

Zobacz więcej: http://mongoosejs.com/docs/populate.html

+0

To jest tylko dla mangusty, mówię o mongoosastycznym. –