javascript - 如何使用 JayData 自定义 OData 服务器?

标签 javascript node.js mongodb odata jaydata

我对 JayData 很陌生,所以这听起来像是一个愚蠢的问题。 我在这里阅读了 OData 服务器教程:http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb - 令人印象深刻的是,可以像那样设置 OData 提供程序。但是教程没有详细介绍如何自定义提供程序。

我有兴趣了解如何使用自定义数据库对其进行设置以及如何向 OData 服务器添加身份验证/授权层。我的意思是,并非每个用户都可能拥有对每个实体的权限,也不是每个用户都拥有添加新实体的权限。

我将如何使用 JayData 处理此类用例?

预先感谢您的回答!

最佳答案

更新:

这里有两篇文章可以帮助您入门:

帖子中经常使用的$data.createODataServer 方法是一种对您隐藏connect/express pipleline 的便捷方法。要与管道交互,请检查在 node_modules/odata-server 文件夹中找到的 $data.createODataServer 函数的方法体。


忽略下面的文字

身份验证必须通过连接管道解决,为此有大量的中间件。

对于授权,EntityContext 构造函数接受必须是 promise 感知的授权函数。

全允许授权器看起来像这样。

  function checkPerm(access, user, entitysets, callback) {
        var pHandler = new $data.PromiseHandler();
        var clbWrapper = pHandler.createCallback(callback);
        var pHandlerResult = pHandler.getPromise();
        clbWrapper.success(true); // this grants a joker rw permission to everyone
        //consult user, entitySet and acces to decide on success/error
        //since you return a promise you can call async stuff (will not be fast though)
        return pHandlerResult;
    }

我必须就让您将其传递到构建过程中的语法咨询其中一位团队成员 - 但我可以确认这是可行的并且受到支持。我会尽快回复。

对用户进行身份验证后,您还可以使用 EntityContext Level Events拦截读取/更新/创建/删除操作。

$data.EntityContext.extend({
   MySet: { type: $data.EntitySet, elementType: Foobar,
            beforeDelete: function(items) {
               //if delete was in batch you'll get multiple items
               //check items here,access this.request.user 
               return false // deny access
            }

});

还有一种声明方式,你可以用实体集的权限来注释 Angular 色名称,这要求你的用户对象实际上有一个包含 Angular 色名称数组的 Angular 色字段。

关于javascript - 如何使用 JayData 自定义 OData 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14663769/

相关文章:

node.js - 处理输入文件后让 Node.js 与数据库断开连接的正确调用顺序

javascript - Extjs 4 上传成功函数没有反应

mongodb - 如何以原子方式将顺序递增的 id 添加到一组名称/id 对中

node.js - nodejs mongodb es6-promises 获取带有外键数据的列表

javascript - 失去焦点时提交表单

javascript - prop 的默认类型取决于另一个 prop 的值

javascript - “Access to restricted URI denied” 或 FileNotFound Angular 路由

javascript - 单击 div 后在 Javascript 中移动表格

javascript - Node Express 服务器请求。on ('end' )仅针对 get 触发

javascript - Angular-meteor 用户集合仅返回 1 个对象