现在我们在谈论redis
#typescript #node #redis #redishackathon

我有不幸。我向左和向左转,不知道怎么了。打字稿保存了一天,现在我必须学习一些typescript的细节。

我从redis-om版本0.2.0开始。然后升级到当前版本的0.3.6版本。

创建一个连接

// client.ts
import { Client } from "redis-om";

const REDIS_URI = process.env.REDIS_URI;

const client: Client = new Client();

const connectRedis = async () => {
  if (!client.isOpen()) {
    await client.open(REDIS_URI);
  }

  const command = ["PING", "Redis server running"];
  const log = await client.execute(command)
  console.log(log);
};

connectRedis();

export default client;

创建模式

到目前为止,这里唯一与其他不同的东西是这是ts,根据docs,我们必须创建一个与实体相同名称的界面。

// schema.ts
import { Entity, Schema, SchemaDefinition } from "redis-om";

// This is necessary for ts
interface UserEntity {
  username: string;
  password: string;
  email: string;
}

class UserEntity extends Entity {}

const UserSchemaStructure: SchemaDefinition = {
  username: {
    type: "string"
  },
  password: {
    type: "string"
  },
  email: {
    type: "string"
  }
};

export default new Schema(UserEntity, UserSchemaStructure, {
  dataStructure: "JSON"
});

创建一个存储库

从我到目前为止所做的工作,我们可以使用new Repository(schema, client)client.fetchRepository(schema)创建一个存储库。后者有效。该表格给出了一个错误,即Repository Abstract 类。因此,我们必须将其扩展并实施其摘要方法,writeEntityreadEntity。我和前者一起去了,因为它使我的工作更快。

// repository.ts
import { Entity, Repository } from "redis-om";
import client from "./client";
import schema from "./schema";

const repository: Repository<Entity> = client.fetchRepository(schema);

export default repository;

我看起来像ts noob。

创建一行

我们将使用存储库来创建新用户。从我到目前为止所做的一切,我们可以做:

// index.ts
import repository from "./repository";

const user = await repository.createAndSave({
  username: "johndoe",
  email: "johndoe@gmail.com",
  password: "PASSjohndoe"
});

console.log(user);

// Output from the console log
/* 
{
  entityId: "01GB1W8GFDDX6FQN9H7F4T1808",
  username: "johndoe",
  password: "PASSjohndoe"
  email: "johndoe@gmail.com"
}
*/


// index.ts
import repository from "./repository";

const user = repository.createEntity({
  username: "johndoe",
  email: "johndoe@gmail.com",
  password: "PASSjohndoe"
});

const id = await repository.save(user);

// Output from the console log
// 01GB1W8GFDDX6FQN9H7F4T1808 // ID of the row created

结论

在这里,没有什么可说的要说的是,您必须在需要时继续尝试和入睡。即使我一直在做正确的事情,并且没有得到我期望的输出,但我一直在寻找其他方法,并在其他平台上发布我面临的问题,希望另一个人面临同样的问题。 TypeScript为我工作,即使我首先从未想过使用Typescript。现在,学习的另一个途径已经打开了。