我有不幸。我向左和向左转,不知道怎么了。打字稿保存了一天,现在我必须学习一些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 类。因此,我们必须将其扩展并实施其摘要方法,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
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。现在,学习的另一个途径已经打开了。