Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 属性未映射,实体为空,带有NoDB/PHP/doctor_Javascript_Breeze - Fatal编程技术网

Javascript 属性未映射,实体为空,带有NoDB/PHP/doctor

Javascript 属性未映射,实体为空,带有NoDB/PHP/doctor,javascript,breeze,Javascript,Breeze,我通过定义一个模型(到目前为止只有一个实体/模型)提供了元数据: PHP/Doctrine返回的JSON包括列$id=“Serie.id”(例如1,2,3…)和$type=“Serie”。所有列和属性名称都是小写,NamingConvention设置为none。我得到一个空的实体-具有提供的默认值 对于测试,我创建了一个新实体,如下所示: var s = manager.createEntity("Serie", { id: 42, bez: "Test1", jahr: 2999} ); 这

我通过定义一个模型(到目前为止只有一个实体/模型)提供了元数据:

PHP/Doctrine返回的JSON包括列
$id=“Serie.id”
(例如1,2,3…)和
$type=“Serie”
。所有列和属性名称都是小写,NamingConvention设置为none。我得到一个空的实体-具有提供的默认值

对于测试,我创建了一个新实体,如下所示:

var s = manager.createEntity("Serie", { id: 42, bez: "Test1", jahr: 2999} );
这是可行的,我在实体中获得了
ko.observable
属性,实体被物化到缓存中


为什么不从JSON结果中获取实体?我已经将has服务器元数据设置为false,提供了一个模型,所有内容都匹配,但是。。。实体为空。完全没有错误。有什么提示吗?谢谢。

您的查询是什么样的?Breeze需要知道为任何查询返回的EntityType,这可以通过以下任一方式实现:

  • 通过在中建立的ResourceName/EntityType映射 元数据存储。可以使用 MetadataStore.setEntityTypeForResourceName方法
  • 通过toType()调用 在您的EntityQuery()上
  • 在 DataService或EntityQuery的JsonResultsAdapter。“默认”JSONResultAdapter假设JSON.NET序列化,这不太可能适用于PHP后端,因此您可能需要为PHP创建自定义JSONResultAdapter并将其添加到数据服务中
Breeze无法将查询结果映射到实体类型的标准症状是,结果不会转化为“可观察的”。如果Breeze无法确定任何返回结果的EntityType,它只会将其保留为“本机”json格式

请回顾一下我是如何指导您完成诊断的。提出这个问题的人也在使用PHP服务器。

(这可能对任何人都有帮助)


如果您正在使用Doctrine 2(PHP)和breeze js,您可以尝试以下库:

我已经尝试了toType调用,返回的JSON包括$id和$type列->就像JSON.NET结果一样。因此,原始结果应该映射到实体。我还尝试了一个自定义JsonResultsAdapter,但总是得到一个entity no found错误。$id和$type列sholud完成了这项工作,并且创建了Serie实体,但是所有属性都是空的。你能发布一些代码/链接给一个定制的JsonResultsAdapter吗?我试过微风样品中的Edmunds,但也有同样的问题。谢谢。请尝试使用$type列中的名称调用MetadataStore.getEntityType方法。我猜它将返回“未定义”。如果是这样,那么还可以调用MetadataStore.getEntityTypes方法来查看已定义的所有实体和复杂类型。我猜你有命名问题。好的,没错。没有定义EntityType。因此,我的模型/元数据中一定有问题。谢谢。好的,我已经解决了。getEntityType()/getEntityTypes()调用返回正确的实体-属性仍然为空,但是ko.observables.now一切正常-我从零开始,就像这两个答案中描述的那样。再次感谢你们两位。太好了,这正是我的问题。我只是不明白为什么原始json没有映射到实体,但是管理器中的createEntity工作得很好。为了进行测试,我将所有代码都放在datacontext中。你看到我的模型少了什么吗?谢谢
var s = manager.createEntity("Serie", { id: 42, bez: "Test1", jahr: 2999} );