이제 우리는 redis에 대해 이야기하고 있습니다
10582 단어 nodetypescriptredisredishackathon
나는
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
가 추상 클래스라는 오류가 있습니다. 따라서 우리는 그것을 확장하고 추상 메소드인 writeEntity
및 readEntity
를 구현해야 합니다. 작업 속도가 빨라지기 때문에 전자를 사용했습니다.// 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는 저에게 도움이 되었습니다. 이제 배움의 또 다른 길이 열렸습니다.
Reference
이 문제에 관하여(이제 우리는 redis에 대해 이야기하고 있습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/otumianempire/now-we-are-talking-redis-20k7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)