node.js - How query API to get all the data for third level of path? -
this current schema have:
var schema = mongoose.schema; var providerschema = new schema({ name: string, abbreviated: string, services: array, locations: array, description: string, url: string, upvotes:{type:number, default:0}, createdon: { type: date, default: date.now}, posts:[{ type: mongoose.schema.types.objectid, ref: 'post' }] }); this post schema:
var postschema = new mongoose.schema({ title: string, body: string, upvotes: {type: number, default:0}, author: string, provider: { type: mongoose.schema.types.objectid, ref: 'provider' }, comments:[{ type: mongoose.schema.types.objectid, ref: 'comment' }] }); i populated post before:
router.get('/providers/:provider', function(req, res) { req.provider.populate('posts', function(err, provider) { res.json(provider); }); }); and have in api:
router.get('/providers/:provider/posts', function(req, res) { post.find(function(err, post){ if(err){ return next(err); } res.json(post); }); }); i write query in api query posts 1 provider. router.get not working , give me wrong answer.please if can me change query correct one. appreciated.
given schema , route assume have model called provider uses schema shown , :provider in url id requested provider. if use findbyid. also, since using array of references need populate them if want other ids:
router.get('/providers/:provider/posts', function(req, res) { provider.findbyid(req.params.provider).select('posts').populate('posts').exec(function(err, provider) { if(err){ return next(err); } res.json(provider.posts); }); }); otherwise if trying use post model need show schema.
update: using post model:
router.get('/providers/:provider/posts', function(req, res) { post.find({provider: req.params.provider}, function(err, posts) { if(err){ return next(err); } res.json(posts); }); });
Comments
Post a Comment