使用require.js + breeze.js创建dataservice

时间:2014-08-26 15:03:08

标签: javascript breeze require

我正在使用breeze.js在客户端上获取一些serverdata,这很好用。为了创建一个更模块化的应用程序,我想创建一个'dataservice'来捆绑breeze查询的1个模块,作为依赖包含在其他模块中。

这是模块:

define(function () {

var serviceName = window.location.protocol + "//" + window.location.host + '/breeze/n0uk', // route to the Web Api controller
manager = new breeze.EntityManager(serviceName);


function getPoster(callsign) {
    var query = breeze.EntityQuery.from('Posters').where("Callsign","==",callsign);
    return manager.executeQuery(query);
};

return {
    getPoster:getPoster
};
});

我已经创建了一个testmodule来测试函数:

define(["common/dataService"],function(n0uk) {
alert("home/index geladen");

n0uk.getPoster("pe1l").then(function(data) {
        alert(data.Name);
    }
);

});

遗憾的是没有返回数据。我很轻松,需要newby(而且js经验也不是topnotch)。有人能引导我朝着正确的方向前进吗?

1 个答案:

答案 0 :(得分:0)

在您的测试模块中,您正在执行alert(data.Name)。 breeze查询将返回一个具有名为results的数组属性的对象,因此您可能希望使用以下内容:

define(["common/dataService"],function(n0uk) {
alert("home/index geladen");

n0uk.getPoster("pe1l")
    .then(function(data) {
        alert(data.results.length.toString() + ' items returned');
    })
    .fail(function(reason) { alert(reason); });
});

其他尝试:

使用浏览器的F12工具(或visual studio)设置断点并检查查询结果。

使用fiddler"检查员"选项卡确认您的api调用返回数据: screenshot of fiddler inspector

有关executeQuery方法返回的更多信息,请查看此处(滚动到" executeQuery"): http://www.breezejs.com/sites/all/apidocs/classes/EntityManager.html