在Node中使用Breeze.js EntityManager

我感兴趣的是能够使用Breeze.js EntityManager和节点控制台服务中的查询function来访问公开符合BreezeJS / OData的RESTful端点的远程数据服务。

我们目前有一个使用Node.js,MongoDB和Breeze.js breeze-mongodb模块实现的数据服务。

我们使用Web浏览器托pipe客户端,使用Breeze.js客户端API(EntityManager)和上述数据服务访问MondgoDB。

我需要创build另一个Node.js服务,它可以访问与浏览器托pipe的客户端相同的MongoDB数据库,为了一致性/简单性,我想使用与我在Web浏览器中使用的相同的数据访问API。

有没有人尝试过这种configuration?

我尝试使用Node.js模块基础结构加载Breeze及其依赖关系,但是当Breeze尝试将Angular初始化为ajax处理函数时出现错误。 Angular被安装和configuration为一个节点模块依赖,但是我得到一个错误:

错误:[$ injector:nomod] http://errors.angularjs.org/1.2.2/ $ injector / nomod?p0 = ngLocale

理论上我不应该需要angular度,但是如果Angular不存在,我会得到更多的错误。

我可能能够debugging这个特定的问题,但它将需要详细介绍Breeze.js代码,并可能修改它来修复。 很奇怪,如果其他人已经得到这个工作。

目前我在Node中运行Breeze。 它曾经工作得很好,没有任何修改,但几个版本之前,他们添加了一个检查 ,它在浏览器中运行…所以现在我手动删除检查:-)

我的用例有点不同:我在服务器上运行微风,这样我就可以使用与客户端相同的业务逻辑,并且在breezej和DB之间有一个非常薄的层。

我需要改变它来在浏览器中运行的唯一的事情是添加一个虚假的ajax处理程序,委托给我的皮包数据库封装 – 你可以平等委托给其他任何东西,包括你现有的API。

var ctor = function () { this.name = 'node'; this.defaultSettings = { }; }; ctor.prototype.initialize = function () { }; var query = require('../../../../server/db/query'); ctor.prototype.ajax = function (config) { if (config.url === '/api/all') { query.get() .then(function (result) { var httpResponse = { data: result, status: '400', getHeaders: undefined, config: config }; config.success(httpResponse); }) .otherwise(function (error) { var httpResponse = { data: '', status: '500', getHeaders: undefined, error: error, config: config }; config.error(httpResponse); }); } else if (config.url === '/api/SaveChanges') { query.save(JSON.parse(config.data)) .then(function (result) { var httpResponse = { data: result, status: '400', getHeaders: undefined, config: config }; config.success(httpResponse); }) .otherwise(function (error) { var httpResponse = { data: '', status: '500', getHeaders: undefined, error: error, config: config }; config.error(httpResponse); }); } }; breezejs.config.registerAdapter('ajax', ctor); breezejs.config.initializeAdapterInstance('ajax', 'node', true); 

这是一个很好的问题。 我们并没有尝试在Node中运行Breeze,但你的用例很有趣。 这听起来像是Breeze User Voice的完美select。 我们认真对待这些build议。