JayData无法从OData中填充对象

3

我有一个正常工作的OData端点,可以查看单个数据点。(例如,localhost/myData/person(10) 有第10个人的数据。)

然而,在我的JayData javascript中,我的对象值没有被填充。

当我打印:

console.log(person[10]);

initData中的每个对象参数都是未定义的。enter image description here

我的完整脚本是:

var ctx = new WebApplication.resource_dbEntities({ name: 'oData', oDataServiceHost: 'http://localhost:8080/Resource/example.svc' });

    ctx.onReady(function() {
            ctx.person.toArray().then(function(person){
            console.log("Person[10] is:");
            console.log(person[10]);
              person.forEach(function(p) {
                   //Always prints "undefined" :(
                   console.log(p.person_lastname);
               });
          })

          .fail(function(r){
            console.log(r);
          });
        });

更新: 服务器绝对会发送数据——请查看网页上网络面板的剪辑。 enter image description here

注意:我在JayData论坛上发布了更多详细信息。

2个回答

1
我找出了问题所在。Eclipse会从mySQL自动生成实体并将其链接到persistence.xml。person.java中的变量(即使它们是私有的?!)与initData变量不匹配。
一旦我打开了person.java并进行了更改...
@Column(name="project_id")
private int projectId;      
@Column(name="project_budget")
private int projectBudget;

@Column(name="project_client")
private String projectClient;

@Temporal(TemporalType.DATE)
@Column(name="project_enddate")
private Date projectEnddate;

@Column(name="project_ffm")
private int projectFfm;

@Column(name="project_manager")
private int projectManager;

@Column(name="project_name")
private String projectName;

@Column(name="project_number")
private String projectNumber;

@Temporal(TemporalType.DATE)
@Column(name="project_startdate")
private Date projectStartdate;

@Column(name="project_status")
private int projectStatus;

To this:

@Id
@Column(name="project_id")
private int project_id;

@Column(name="project_budget")
private int project_budget;

@Column(name="project_client")
private String project_client;

@Temporal(TemporalType.DATE)
@Column(name="project_enddate")
private Date project_enddate;

@Column(name="project_ffm")
private int project_ffm;

@Column(name="project_manager")
private int project_manager;

@Column(name="project_name")
private String project_name;

@Column(name="project_number")
private String project_number;

@Temporal(TemporalType.DATE)
@Column(name="project_startdate")
private Date project_startdate;

@Column(name="project_status")
private int project_status;

一切正常。感谢大家的帮助。


1

你不需要initData。先查看浏览器的网络面板,看看你的服务器是否发送了任何数据。


谢谢您的回复 - 我已经更新了问题以反映您的建议。 - AllieCat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接