javascript - 在 jayData 中使用自定义实体的最佳实践是什么?

标签 javascript prototype jaydata

我有一个自定义机制来在 JavaScript 中定义类,如下所示:

Tools.User = Tools.Class.define("Tools.User", Tools.Entity, {
    Id: { type: "int", key: true, computed: true },
    IsActive: { type: Boolean },
    IsAdmin: { type: Boolean },
    LName: { type: String },
    FName: { type: String },
    FullName: { get: function () { return this.FName + " " + this.LName; }, Type: String },
    init: function (name, lname) {
        this.IsAdmin = false;
        this.IsActive = true;
        this.FName = name;
        this.LName = lname;
        Tools.Entity.call(this, arguments);
    },
    onEndEdit: function () {

        if (this.IsActive == false && this.IsAdmin == true) {
            throw new Error(Messages.AdminCanNotBeDisabled);
        }

        this.parentClass.onEndEdit();

    },
    deActivate: function () {

        if (this.IsAdmin == true) {
            throw new Error(Messages.AdminCanNotBeDisabled);
        }

        this.IsActive = false;
    }
});

如您所见,它支持虚拟/覆盖、自动实现的属性、构造函数等。

我想在 JayData 中使用我自己的类。为此,我开发了以下几行代码:

$data.EntityContext.extend("Tools.AppDb", {
    Users: { type: $data.EntitySet, elementType: Tools.User }
});

var appDb = new Tools.AppDb({
    provider: 'indexedDb', databaseName: 'AppDb'
});

appDb.onReady(function () {

});

很明显,以这种方式与 Jaydata 合作是不可能的。但如何才能以最少的代码更改来实现这一目标呢?

我认为这个错误消息没有用,但这是一条错误消息:

Uncaught TypeError: Cannot call method 'getPublicMappedProperties' of undefined 

最佳答案

JayData 可以对 JayData 实体进行操作,以跟踪更改并使独立于存储的数据管理成为可能。

因此,Users EntitySet 的 elementType 应该派生自 $data.Entity:

$data.Entity.extend("Todo", {
    Id: { type: "int", key: true, computed: true },
    Task: { type: String, required: true, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

关于javascript - 在 jayData 中使用自定义实体的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143594/

相关文章:

javascript - 获取jaydata同步返回对象

javascript - 带有 WebAPI 的 JayData

javascript - 超出图表中的最大文本大小

javascript - 使用 sinon stub 在 Angular Controller 构造中调用的范围方法

javascript - Ajax 网站内容保护可能吗?

javascript - Node.js 的命令行参数

Javascript 对象和原型(prototype)

javascript 数组原型(prototype) - 添加了新方法 - 奇怪的 console.log

javascript - 原型(prototype)插入后

javascript - 使用 NodeJS 和 JayData 的 OData 服务