我有以下型号
var ProgramSchema = new Schema({
created: {
type: Date, default: Date.now
},
user: {
type: Schema.ObjectId, ref: 'User'
},
name: {
type: String, default: '', required: 'Name cannot be blank', trim: true
},
permissions: [{
user: {
type: Schema.ObjectId, ref: 'User'
},
roles: {
type: [{
type: String, enum: ['reader', 'editor', 'admin', 'requested']
}]
}
}]
});
我需要3个不同的查询。我敢肯定,如果你帮助我其中一个,我可以弄明白另外两个。
答案 0 :(得分:0)
想出来。
我通过修改现有的programs.client.service.js
创建了一个新工厂angular.module('programs')
.factory('Programs', ['$resource',
function ($resource) {
return $resource('api/programs/:programId', {
programId: '@_id'
}, {
update: {
method: 'PUT'
}
});
}
])
.factory('ProgramsSubscribedForUser', ['$resource',
function($resource) {
return $resource('api/programs/user/:userId', {
userId: ''
}, {
update: {
method: 'PUT'
}
});
}
]);
在programs.server.js中添加了一条新路线
app.route('/api/programs/user/:userId').all(programsPolicy.isAllowed)
.get(programs.listProgramsSubscribedForUser);
在programs.server.controller.js
中添加了新功能exports.listProgramsSubscribedForUser = function (req, res) {
Program.find(
{ $and: [
{"permissions.user" : req.user },
{"permissions.roles" : { $in: [ 'admin', 'editor', 'reader' ] } }
] }
).sort('-created').populate('user', 'displayName').exec(function (err, programs) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(programs);
}
});
};