2016-02-03 11 views
9

Il mio obiettivo è quello di compilare alcuni campi in cerca mongoosastic, ma se lo faccio i seguenti codici, sarà sempre tornareCome si popola su mongoosastic?

enter image description here

Ecco il codice

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); 
    }); 
}); 

Cosa devo fare per popolare una determinata categoria in mongoosastic?

+0

Hai funzionato? Ho un problema simile in cui ottengo 0 risultati quando popolano. Ho letto più volte i documenti, ma non sono sicuro di dove ho sbagliato. Se puoi fornire informazioni: http://stackoverflow.com/questions/37758652/mongoosastic-elastic-search-will-not-return-any-hits-when-populating – someoneHere

+0

risolvi questo problema? – Mikhail

risposta

0

Si utilizza

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

Ma categories nel codice è undefined.

si deve utilizzare categoria al posto di categories come lei ha menzionato la chiave come categoria nella dichiarazione dello schema

auguriamo che possa risolvere il problema.

+0

Sono passato alla categoria ma non ha funzionato. –

-1

Edit:

categoria: {type: Schema.Types.ObjectId, ref: 'Categoria', es_schema: Categoria, es_indexed: vero, es_select: 'name'},

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

E l'uso popolano: .populate ('_ categoria', 'nome')

Spero che vi aiuterà.

Vedere di più: http://mongoosejs.com/docs/populate.html

+0

Questo è solo per la mangusta, sto parlando di mongoosastic. –