이제 우리는 redis에 대해 이야기하고 있습니다

내 사고가 있었다. 나는 무엇이 잘못되었는지 모른 채 좌우로 돌았다. Typescript는 하루를 구했고 이제 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가 추상 클래스라는 오류가 있습니다. 따라서 우리는 그것을 확장하고 추상 메소드인 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 놈처럼 보입니다.

행 만들기



저장소를 사용하여 새 사용자를 생성합니다. 지금까지 수행한 작업을 통해 다음을 수행할 수 있습니다.

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

const user = await repository.createAndSave({
  username: "johndoe",
  email: "[email protected]",
  password: "PASSjohndoe"
});

console.log(user);

// Output from the console log
/* 
{
  entityId: "01GB1W8GFDDX6FQN9H7F4T1808",
  username: "johndoe",
  password: "PASSjohndoe"
  email: "[email protected]"
}
*/


또는

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

const user = repository.createEntity({
  username: "johndoe",
  email: "[email protected]",
  password: "PASSjohndoe"
});

const id = await repository.save(user);

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


결론



계속 노력하고 필요할 때 잠을 자는 것보다 할 말이 많지 않습니다. 내가 항상 옳은 일을 하고 있고 내가 기대하는 결과를 얻지 못했지만, 다른 사람이 같은 문제에 직면하기를 바라며 계속해서 다른 방법을 찾고 내가 직면한 문제를 다른 플랫폼에 게시했습니다. 처음에 Typescript를 사용할 생각은 없었지만 Typescript는 저에게 도움이 되었습니다. 이제 배움의 또 다른 길이 열렸습니다.

좋은 웹페이지 즐겨찾기