2016-02-03 3 views
9

मेरा लक्ष्य mongoosastic खोज में कुछ खानों को भरने के लिए है, लेकिन अगर मैं निम्नलिखित कोड का करते हैं, यह हमेशा वापस आ जाएगीमैं mongoosastic पर populate कैसे करते हैं?

enter image description here

यहाँ कोड

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

मुझे मोंगोओस्टिक में एक निश्चित श्रेणी को पॉप्युलेट करने के लिए क्या करना चाहिए?

+0

क्या आपको यह काम करने के लिए मिला? मेरे पास एक समान समस्या है जहां पॉप्युलेटिंग के दौरान मुझे 0 हिट मिलती हैं। मैंने दस्तावेज़ों पर कई बार पढ़ा है, लेकिन मुझे यकीन नहीं है कि मैं गलत कहां गया था। यदि आप अंतर्दृष्टि प्रदान कर सकते हैं: http://stackoverflow.com/questions/37758652/mongoosastic-elastic-search-will-not-return-any-hits-when-populating – someoneHere

+0

क्या आप इस समस्या को हल कर रहे हैं? – Mikhail

उत्तर

0

अपने कोड के

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

लेकिन categories उपयोग कर रहे हैं undefined है।

आप के रूप में आप स्कीमा घोषणा

आशा है कि यह आपकी समस्या का समाधान होगा श्रेणी के रूप में कुंजी उल्लेख किया है categories के स्थान पर श्रेणी का उपयोग करना होगा।

+0

मैं श्रेणी में बदल गया लेकिन यह काम नहीं किया। –

-1

संपादित करें:

श्रेणी: {प्रकार: Schema.Types.ObjectId, रेफरी: 'श्रेणी', es_schema: श्रेणी, es_indexed: सच है, es_select: 'नाम'},

=> _category: {प्रकार: Schema.Types.ObjectId, रेफरी: 'श्रेणी'},

और उपयोग से भरें: .populate ('_ श्रेणी', 'नाम')

आशा है कि यह आप में मदद मिलेगी।

और देखें: http://mongoosejs.com/docs/populate.html

+0

यह केवल मोंगोज़ के लिए है, मैं मोंगोसास्टिक के बारे में बात कर रहा हूं। –

संबंधित मुद्दे