Breeze registerEntityTypeCtor不工作

Breeze registerEntityTypeCtor不工作,breeze,hottowel,Breeze,Hottowel,我正在做一个HotTower项目,我想格式化一些从数据库传递到Breeze的数据,但看起来ctor没有注册 我做错了什么 在datacontext.js中: var manager = configureManager(); function configureManager() { var mng = new breeze.EntityManager('breeze/data'); breeze.NamingConvention.camelCa

我正在做一个HotTower项目,我想格式化一些从数据库传递到Breeze的数据,但看起来ctor没有注册

我做错了什么

datacontext.js
中:

    var manager = configureManager();

    function configureManager() {
        var mng = new breeze.EntityManager('breeze/data');
        breeze.NamingConvention.camelCase.setAsDefault();
        model.configureMetadataStore(mng.metadataStore);

        return mng;
    }
    function configureMetadataStore(metadataStore) {
        metadataStore.registerEntityTypeCtor
            ('UserInfo', null, userInfoInitializer);
    }

    function userInfoInitializer() {
        if (this.Email == "")
            this.Email = '---';

        this.CreateDate = formatDateTime(this.CreateDate);
    }

    function formatDateTime(DateTime) {
        return moment.utc(DateTime).format('DD. MM. YYYY. [у] hh:mm');
    }
model.js
中:

    var manager = configureManager();

    function configureManager() {
        var mng = new breeze.EntityManager('breeze/data');
        breeze.NamingConvention.camelCase.setAsDefault();
        model.configureMetadataStore(mng.metadataStore);

        return mng;
    }
    function configureMetadataStore(metadataStore) {
        metadataStore.registerEntityTypeCtor
            ('UserInfo', null, userInfoInitializer);
    }

    function userInfoInitializer() {
        if (this.Email == "")
            this.Email = '---';

        this.CreateDate = formatDateTime(this.CreateDate);
    }

    function formatDateTime(DateTime) {
        return moment.utc(DateTime).format('DD. MM. YYYY. [у] hh:mm');
    }

Datacontext引用模型,数据从数据库传输并显示在屏幕上,但未格式化
console.log()
没有出现来自
userInfoInitializer()
的调用。

当我构造实体时,我的构造函数需要有一个要构造的实体。我没有尝试过上面的代码,但我相信Breeze会传入一个实体,您需要为该实体提供属性。用这个。也许有用,但对我来说,这是最重要的

function userInfoInitializer(user) {
    if (user.Email == "")
        user.Email = "---";
第二,您的实体在模型中的名称是什么?是用户信息还是仅仅是用户信息?您可能已经知道这一点,但需要确保在添加构造函数时使用正确命名的实体

第三-如果您使用camelCase,则需要将属性的第一个字母保留为小写。前任。user.email和user.createDate

最后,我无法判断您是在构造函数中创建“createDate”,还是从模型中传递。如果它确实是您正在创建的属性,我建议将其设置为一个可忽略的可观察或计算属性。如果它来自数据库,那么您需要执行以下操作

if (!user.createDate) { } //set it 

请记住,从数据库返回的所有实体都将被赋予该属性,因此,如果您的示例中有已具有createDate的实体,则您将覆盖该日期。如果您想将createDate设置为now,那么我会将其移动到您创建对象的方法中。

不再使用
,它仍然不起作用。我忘了提到,
UserInfo
不是数据库中的表,但是模型中有一个类UserInfo。我使用它在他的个人资料页面上显示用户信息,但由于明显的原因,我无法加载所有内容(如密码)。初始化器似乎未注册。是否正确地将分部映射回父对象?如果不是,您的初始值设定项将不会意识到UserInfo是一个用户。谢谢,这篇文章对我帮助很大。我最终使用了
[JsonIgnore]
,因为密码永远不应该通过网络。