首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YDN-DB密钥生成器TypeScript

YDN-DB密钥生成器TypeScript
EN

Stack Overflow用户
提问于 2016-02-02 07:23:01
回答 1查看 209关注 0票数 0

我想使用TypeScript创建一个数据库模式。这很简单,但我不能,也不知道如何定义密钥生成器。例如,在“用户指南”中,这样的代码片段(使用JavaScript):

代码语言: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.d.ts(downloaded ydn.db-1.0.ts(从YDN-DB服务器下载)或从DefinitelyTyped定义这个生成器吗?

例如,我编写了这个ts文件:

代码语言:javascript
复制
/// <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,
            }
          ]
        }
      ]
   }
 }

和我想要的位置写了一个发电机。我想写这样的东西:

代码语言:javascript
复制
        ...
        indexes:
        [
          {
            name: "idxLocation",
            generator: (record: Place): string => 
            { return record.Location.toLowerCase() },
            unique: true,
          }
        ]
        ...

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

EN

回答 1

Stack Overflow用户

发布于 2016-02-02 14:51:54

是的,这可以使用ydn-db.d.ts(from DefinitelyTyped解决)。库ydn.db-1.0.ts中断(重复定义,而不是布尔布尔,等等)。在库ydn-db.d.ts(from DefinitelyTyped中,生成器被忽略了。使用IndexSchemaJson接口的扩展,我可以编写这段代码,包括生成器:

代码语言:javascript
复制
/// <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(); }
            }
          ]
        }
      ]
   }    
 }

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35147359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档