Angularjs 从数据模型生成CRUD RESTful API

Angularjs 从数据模型生成CRUD RESTful API,angularjs,node.js,rest,express,node-orm2,Angularjs,Node.js,Rest,Express,Node Orm2,我正在开发基于Angular、RESTful和Express的单页应用程序。要管理我选择的数据库。我的数据模型类似于: var User = db.define("user", { name: String }); var Order = db.define("order", { type: String, comment: String } // this line will produce methods: Order.getOwner(..), Order.setO

我正在开发基于Angular、RESTful和Express的单页应用程序。要管理我选择的数据库。我的数据模型类似于:

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\u id/orders/:order\u id
下有报价操作路径的子树。这个子树是标准的:

  • 报价”)。发布(…)
    -创建报价
  • 获取(…)-获取所有优惠
  • offers/:offer\u id”)。获取(…)
    -获取具体报价
  • offers/:offer\u id”)。放置(…)
    -修改具体报价
  • 应该可以定义模型,而不仅仅是注册它们以由RESTfulAPI处理

    这个案例是否有任何现有的框架

    更新


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

    环回的具体功能:请访问“谢谢您的建议”。我的计划是有两组处理程序:第一组用于CRUD(由某个框架生成)之类的伪操作,第二组手动实现用于特定于业务的操作,用于隔离到PUT处理程序中的具体对象。对于第一组,环回是完美的,但对于第二组,我会遇到麻烦。即使通过实现,大多数应用程序在资源和数据模型之间也没有明确的映射。如果需要新操作,则必须在“实体”资源或“虚拟”资源上使用现有HTTP方法。您要做的是将实体映射到“实体”资源,将CRUD操作映射到HTTP方法,这是可以做到的,但是大多数应用程序也有“虚拟”资源,因为它们不仅仅执行CRUD。因此,我认为您缺少一个服务层。我不建议您使用分层URL,而是使用平面URL,例如:
    /offers/:offer\u id
    。您的响应应该包含超链接(如果您不使用自定义供应商特定的MIME类型),其中包含操作模板:方法+URI模板+链接元数据+属性+属性元数据,其中客户端仅使用元数据来了解超链接的作用以及如何填充缺少的属性。如果您想了解更多关于REST和js的信息,有一个正在开发的for js。