从Node中使用Breeze.js EntityManager
Using Breeze.js EntityManager from within Node
我感兴趣的是能够在节点控制台服务中使用Breeze.js EntityManager和查询功能来访问远程数据服务,该服务公开了符合BreezeJS/OData的RESTful端点。
我们目前有一个使用Node.js、MongoDB和Breeze.js微风MongoDB模块实现的数据服务。
我们的web浏览器托管客户端使用Breeze.js客户端API(EntityManager)和上述数据服务访问MondgoDB。
我需要创建另一个Node.js服务,它可以访问web浏览器托管客户端所做的相同MongoDB数据库,为了一致性/简单性,我希望使用与web浏览器中使用的相同的数据访问API。
有人试验过这种配置吗?
我尝试使用Node.js模块基础设施加载Breeze及其依赖项,但当Breeze试图将Angular初始化为ajax处理程序时,会出现错误。Angular是作为节点模块依赖项安装和配置的,但我遇到了一个错误:
错误:[$injector:nomod]http://errors.angularjs.org/1.2.2/$injector/nomod?p0=ng区域
理论上我不需要角度,但如果不存在角度,我会得到额外的误差。
我可能能够调试这个特定的问题,但它需要详细地遍历Breeze.js代码,并可能对其进行修改以修复。很好奇是否有其他人能做到这一点。
我现在正在Node中运行Breeze。它过去在没有任何修改的情况下工作得很好,但在几个版本前,他们添加了一个检查它是否在浏览器中运行。。。所以现在我手动删除该复选框:-)
我的用例有点不同:我在服务器上运行breeze,这样我就可以使用与客户端相同的业务逻辑,只是在breezjs和DB之间有一层非常薄的层。
为了让它在浏览器中运行,我唯一需要更改的就是添加一个伪ajax处理程序,将其委托给我的瘦DB包装器——你可以同样地委托给其他任何东西,包括你现有的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用户声音的完美项目。我们认真对待这些建议。
- Breeze.js getEntities不返回任何实体
- Breeze.js的非事务性SaveChanges
- 从Node中使用Breeze.js EntityManager
- Breeze.js OData v4 Error
- Breeze.js-将保存重定向到自定义端点
- 如何使用Breeze-js和Nancy实现SaveChanges
- Breeze.js/NET+EF复杂的对象行为相当奇怪
- Breeze JS - 从对象图扩展模型
- OData URL 检查长度是否可以使用 Breeze JS 表示
- BundleConfig.cs不会在MVC应用程序中下载Breeze.js ASP.NET
- Breeze JS:有没有办法从data.results中查询实体
- Knockout在刷新之前不渲染客户端选择框(Breeze.js)
- Breeze-js调用元数据,但不调用't对服务器进行第二次调用
- 在哪里可以找到将Breeze JS与Rails一起使用的适配器
- Breeze.js实体框架多个一对一的相同类型(Parent->Child-childOne,Child-chil
- Breeze.js 1.4.1未定义的属性不为null
- 在没有实体框架的情况下使用Breeze.js
- 如何在Breeze.js中使用子查询
- Breeze.js加载NavigationProperty并展开
- Breeze.js和knockout.js会再次应用绑定