从数据模型生成CRUD RESTful API

时间:2015-06-17 06:15:55

标签: angularjs node.js rest express node-orm2

我正在开发基于Angular,RESTful,Express的单页应用。为了管理数据库,我选择了node-orm2。我的数据模型类似于:

var User = db.define("user", {
    name: String
});
var Order = db.define("order", {
    type: String,
    comment: String
}
// this line will produce methods: Order.getOwner(..), Order.setOwner(..), User.getOrders(..), User.addOrder(..)
Order.hasOne("owner", User, {reverse: 'orders'});
var Offer = db.define("offer",{
    price:  Number
});
// this line will produce methods: Offer.getOrder(..), Offer.setOrder(..), Order.getOffers(..), Order.addOffer(..)
Offer.hasOne("order", Order, {reverse: "offers"});

要从Angular fronted(使用$resource)访问此模型,我为Express应用程序创建了RESTful处理程序:

router.route("/user/:user_id/orders").get(...).post(...)
router.route("/user/:user_id/orders/:order_id").get(...).delete(...)
router.route("/user/:user_id/orders/:order_id/offers").get(...).post(...)
router.route("/user/:user_id/orders/:order_id/offers/:offer_id").get(...).put(...)

之后我意识到数据模型定义和RESTful API实现之间存在明确的映射。

例如,如果我有Offer.hasOne("order", Order, ...)我在/user/:user_id/orders/:order_id下有提供操作的路径的子树。这个子树是标准的:

  1. offers").post(...) - 创建优惠;
  2. offers").get(...) - 获取所有优惠;
  3. offers/:offer_id").get(...) - 获得具体报价
  4. offers/:offer_id").put(...) - 修改具体报价
  5. 应该可以定义模型,而不仅仅是注册它们以由RESTful API处理。

    这种情况是否有现有的框架?

    更新

    业务逻辑操作我将实现为带参数的PUT操作。

0 个答案:

没有答案