我正在使用generator-angular-fullstack:
npm install -g generator-Angular-Fullstack@3.2.0
使用设置创建项目: 开箱即用我用Express服务器创建一个AngularJS应用程序。
?你想用标记写什么?的 HTML ?你想用什么写样式表?的 CSS ?你想使用什么Angular路由器?的 uiRouter ?你想包括Bootstrap吗? 是 ?你想要包含UI Bootstrap吗?的是
?您想用什么来进行数据建模? 猫鼬(MongoDB) ?你会建立一个认证样板吗? 是 ?您想要包含其他oAuth策略吗? Facebook,Twitter ?你想使用socket.io吗?的是
?你想用什么写测试? (使用箭头键)?的茉莉
我创建了新的端点"预订":
yo angular-fullstack:endpoint reservation //Server side
yo angular-fullstack:route reservatios //Client Route
更新了新页面的填充和#34;预留"名单。 但它得到了所有" Reservation"项目。
我想在用户isAdmin时获得所有预订。 在其他情况下(非用户或简单用户)我希望只获得有效的预订。
所以有简单的预订模式:
var ReservationSchema = new Schema({
date: {
type: Date,
required: true
}
//,user: {
// type : Schema.ObjectId,
// ref : 'User'
//}
});
预订已激活,当"新日期()" < reservatio.date。
所以有这些服务器端控制器: server \ api \ reservation \ reservation.controller.js
这些方法如下:
// Gets a list of Reservations
export function index(req, res) {
Reservation.findAsync()
.then(responseWithResult(res))
.catch(handleError(res));
}
所以我为ActiveReservations创建了另一个函数:
// Gets a list of Active Reservations
export function active(req, res) {
Reservation.findAsync()
.then(getOnlyActive(res))
.then(responseWithResult(res))
.catch(handleError(res));
}
所以我添加了这个自定义功能" getOnlyActive(res)"。
我的问题: 应该在该功能中,如何过滤" res",以获得仅有效预订?我认为过滤应该在这里完成。更正我的并指出正确的批准如何从mongoDB获取过滤的项目(使用mongoose)。
答案 0 :(得分:0)
最后找出如何进行过滤:)...
在示例中,这是我的模型(server \ api \ reservation \ reservation.model.js):
var mongoose = require('bluebird').promisifyAll(require('mongoose'));
var Schema = mongoose.Schema;
var ReservationSchema = new Schema({
date: {
type: Date,
required: true
}
});
export default mongoose.model('Reservation', ReservationSchema);
我添加了新的静态功能:
ReservationSchema.statics.findActive = function (next) {
return this.find({"date": {"$gte": new Date()}});
};
然后将新功能添加到预约控制器(server \ api \ reservation \ reservation.controller.js)
// Gets a list of Active Reservations
export function active(req, res) {
Reservation.findActive()
.execAsync()
.then(responseWithResult(res))
.catch(handleError(res));
}
最后添加了有效预订的路由(server \ api \ reservation \ index.js):
router.get('/active', controller.active);
现在它可以工作:)。通过在浏览器中调用来检查:
http://localhost:9000/api/reservations //获取所有预订 http://localhost:9000/api/reservations/active //仅获取有效预订 - 使用" reservation.date>新的日期()"。