如何查询API获取第三级路径的所有数据?
How query API to get all the data for third level of path?
这是我当前的模式:
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' }]
});
这是 post 架构:
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' }]
});
我填充了 post 之前:
router.get('/providers/:provider', function(req, res) {
req.provider.populate('posts', function(err, provider) {
res.json(provider);
});
});
这就是我的 API:
router.get('/providers/:provider/posts', function(req, res) {
Post.find(function(err, post){
if(err){ return next(err); }
res.json(post);
});
});
我想在 API 中编写一个查询,查询一个提供商的所有 post。这个 router.get 不起作用,如果有人可以帮助我更改此查询以更正一个,请返回我错误的 answer.Please。我将不胜感激。
根据您的架构和路由,我假设您有一个名为 Provider
的模型,它使用所示的架构,并且 URL 中的 :provider
是所请求提供程序的 ID。如果是这样,你可以使用 findById
. Also, since you are using an array of references you will need to populate
他们,如果你想要除他们的 ID 以外的任何东西:
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);
});
});
否则,如果您尝试使用 Post
模型,则需要显示该架构。
更新:使用您的 Post
模型:
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);
});
});
这是我当前的模式:
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' }]
});
这是 post 架构:
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' }]
});
我填充了 post 之前:
router.get('/providers/:provider', function(req, res) {
req.provider.populate('posts', function(err, provider) {
res.json(provider);
});
});
这就是我的 API:
router.get('/providers/:provider/posts', function(req, res) {
Post.find(function(err, post){
if(err){ return next(err); }
res.json(post);
});
});
我想在 API 中编写一个查询,查询一个提供商的所有 post。这个 router.get 不起作用,如果有人可以帮助我更改此查询以更正一个,请返回我错误的 answer.Please。我将不胜感激。
根据您的架构和路由,我假设您有一个名为 Provider
的模型,它使用所示的架构,并且 URL 中的 :provider
是所请求提供程序的 ID。如果是这样,你可以使用 findById
. Also, since you are using an array of references you will need to populate
他们,如果你想要除他们的 ID 以外的任何东西:
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);
});
});
否则,如果您尝试使用 Post
模型,则需要显示该架构。
更新:使用您的 Post
模型:
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);
});
});