【问题标题】:YDN-DB key Generator TypeScriptYDN-DB 密钥生成器 TypeScript
【发布时间】:2016-05-10 21:32:19
【问题描述】:

我想使用 TypeScript 创建一个数据库模式。这很简单,但我不能或不知道如何定义密钥生成器。 以用户指南为例,这样一段代码sn-p(使用JavaScript):

var schema = {
  ...
indexes: [
  {
    name: 'name', // index for case in-sensitive sorting
    generator: function(obj) {
      var name = obj.first + ' ' + obj.last;
      return name.toLowerCase();
    }
  }
],

我可以使用库 ydn.db-1.0.ts(从 YDN-DB 服务器下载)或 ydn-db.d.ts(从DefinitelyTyped 下载)?

比如我写了这个ts文件:

/// <reference path="typings/ydn-db/ydn-db.d.ts" />
module YdnDbTest
{
  module DatabaseHelper
  {
    interface Place
    {
      Name: string;
      Location: string;
    }

    var AppDbSchema: DatabaseSchemaJson =
    {
      stores:
      [
        {
          name: "AppDbStore",
          keyPath: "Name",
          indexes:
          [
            {
              name: "idxLocation",
              keyPath: "Location",
              unique: true,
            }
          ]
        }
      ]
   }
 }

,我想为Location写一个生成器。我想写这样的东西:

        ...
        indexes:
        [
          {
            name: "idxLocation",
            generator: (record: Place): string => 
            { return record.Location.toLowerCase() },
            unique: true,
          }
        ]
        ...

就像我为主密钥(名称)编写生成器一样,但这可能是不可能的。

【问题讨论】:

  • ydn.db-1.0.ts 仅包含定义列表,而不包含源代码。所以你还是要加载ydn.db-is-core-qry.js文件。
  • ydn.db-1.0.ts 是定义文件,我应该使用它来编写 TypeScript 代码。我相信此时我不需要那个文件 ydn.db-is-core-qry.js。
  • 是的,您应该在文件///&lt;reference path="relative/path/to/ydn.db-1.0.ts" /&gt; 的顶部添加 TypeScript 代码以加载这些 TypeScript 定义,然后您可以使用文件中定义的类型。但是,您仍然需要在某些时候引用 .js 文件,否则它将无法在您的浏览器中运行。
  • 是的,没错,但我认为这与问题无关。

标签: typescript ydn-db


【解决方案1】:

是的,这可以使用ydn-db.d.ts(来自DefiniteTyped)来解决。库 ydn.db-1.0.ts 已损坏(重复定义,而不是 boolean bool 被提及等)。对于库ydn-db.d.ts(来自DefiniteTyped),生成器被忽略了。使用 IndexSchemaJson 接口的扩展,我可以编写此代码,包括生成器:

/// <reference path="typings/ydn-db/ydn-db.d.ts" />
module YdnDbTest
{
  module DatabaseHelper
  {
    interface Place
    {
      Name: string;
      Location: string;
    }

    interface IndexSchemaJsonB extends IndexSchemaJson
    {
      generator?: (row: any) => any;
    }

    var AppDatabaseSchema: DatabaseSchemaJson =
    {
      stores:
      [
        {
          name: "StoreA",
          keyPath: "Name",
          indexes:
          [
            <IndexSchemaJsonB>
            {
              name: "idxLocation",
              keyPath: "Location",
              generator: (row: Place): string =>
                { return row.Location.toLocaleUpperCase(); }
            }
          ]
        }
      ]
   }    
 }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2021-06-18
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    相关资源
    最近更新 更多