나는 redis 또는 무엇을하고 있습니까?

우선, 오류부터 시작하겠습니다.

node:internal/process/esm_loader:94
    internalBinding('errors').triggerUncaughtException(
                              ^

[ErrorReply: ERR unknown command 'JSON.SET', with args beginning with: 'Album:01GAZ32CZWSPB78HE8M75VH1GR' '.' '{"artist":"Mushroomhead","title":"The Righteous & The Butterfly","year":2014,"genres":["m' ]


redis-server가 백그라운드에서 실행 중이고 기본 데이터베이스인 redis에서 작동하는 방식을 확인하기 위해 redis-om-node으로 이동했습니다. 전체 흐름을 이해하기 위해 몇 가지 스니펫을 함께 넣었습니다.

import { Client, Entity, Schema, Repository } from "redis-om";

const client = new Client();
await client.open("redis://localhost:6379");

class Album extends Entity {}

const albumSchema = new Schema(Album, {
  artist: { type: "string" },
  title: { type: "text" },
  year: { type: "number" },
  genres: { type: "string[]" },
  outOfPublication: { type: "boolean" }
});

const albumRepository = client.fetchRepository(albumSchema);

const album = albumRepository.createEntity();
album.artist = "Mushroomhead";
album.title = "The Righteous & The Butterfly";
album.year = 2014;
album.genres = ["metal"];
album.outOfPublication = true;

const id = await albumRepository.save(album); // '01FJYWEYRHYFT8YTEGQBABJ43J'

console.log(id);


redis-om-node 또는 redis-om을 훑어본 사람이라면 누구나 이 코드를 인식할 것입니다.
package.json 파일에서 기본 데이터베이스를 MongoDB에서 Redis로 변경하기 때문에 이러한 패키지를 설치했습니다.

...
  "dependencies": {
    "bcrypt": "^5.0.0",
    "cors": "^2.8.5",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "joi": "^17.6.0",
    "joi-password": "^3.0.1",
    "jsonwebtoken": "^8.5.1",
    "morgan": "^1.10.0",
    "morgan-json": "^1.1.0",
    "redis": "^4.2.0",
    "redis-om": "^0.3.6",
    "winston": "^3.7.2"
  },
...


오류가 발생하고 오류가 어디에서 왔는지 또는 무엇인지 알지 못하는 것은 지금 꽤 오랫동안 다루어 온 것입니다. 나는 내가 유일한 사람이 아니라는 것을 압니다. 그러니 계속 밀어붙이세요.

나는 그것이 내가 아니라 코드 또는 무언가라고 생각하고 있었기 때문에 Google과 Stackoverflow 및 dev.to를 파기 시작했습니다. 내가 했던 것처럼 가져오는 대신 새 저장소를 생성할 수 있다는 것을 알았거나 여기에서 수행되었습니다. const albumRepository = client.fetchRepository(albumSchema); 코드를 업데이트했습니다.

import { Client, Entity, Schema, Repository } from "redis-om";

const client = new Client();
await client.open("redis://localhost:6379");

class Album extends Entity {}

const albumSchema = new Schema(
  Album,
  {
    artist: { type: "string" },
    title: { type: "text" },
    year: { type: "number" },
    genres: { type: "string[]" },
    outOfPublication: { type: "boolean" }
  },
  { dataStructure: "JSON" }
);

// const albumRepository = client.fetchRepository(albumSchema);
const repository = new Repository(client, albumSchema);

// const album = albumRepository.createEntity();
const album = repository.createEntity();
album.artist = "Mushroomhead";
album.title = "The Righteous & The Butterfly";
album.year = 2014;
album.genres = ["metal"];
album.outOfPublication = true;

// const id = await albumRepository.save(album);
const id = await repository.save(album);

console.log(id);


뭔지 맞춰봐? 이전과 다른 오류가 발생했습니다.

/home/user/Projects/web/ARMS-redis/node_modules/redis-om/dist/index.js:907
    const id = this.schema.generateId();
                           ^

TypeError: this.schema.generateId is not a function
    at Repository.createEntity (/home/user/Projects/web/ARMS-redis/node_modules/redis-om/dist/index.js:907:28)
    at file:///home/user/Projects/web/ARMS-redis/src/index.js:24:26
    at processTicksAndRejections (node:internal/process/task_queues:96:5)


나는 /home/user/Projects/web/ARMS-redis/node_modules/redis-om/dist/index.js:907에 갔다

  createEntity(data = {}) {
    const id = this.schema.generateId();
    return new this.schema.entityCtor(this.schema, id, data);
  }


이것은 존재하지 않는 createEntity 함수를 가지고 있거나 가리키는 generateId입니다. 같은 파일 안에 var Schema = class { ... } 클래스가 있었고 generateId 함수가 있습니다.

다시 파헤쳐 보니 저장소에 다른 방법이 있다는 것을 알게 되었습니다. createAndSave({}) . express-redis-om-workshop .

수정했습니다.

import { Client, Entity, Schema, Repository } from "redis-om";

const client = new Client();
await client.open("redis://localhost:6379");

class Album extends Entity {}

const albumSchema = new Schema(
  Album,
  {
    artist: { type: "string" },
    title: { type: "text" },
    year: { type: "number" },
    genres: { type: "string[]" },
    outOfPublication: { type: "boolean" }
  },
  { dataStructure: "JSON" }
);

// const albumRepository = client.fetchRepository(albumSchema);
const repository = new Repository(client, albumSchema);

// const album = albumRepository.createEntity();
// const album = repository.createEntity();
// album.artist = "Mushroomhead";
// album.title = "The Righteous & The Butterfly";
// album.year = 2014;
// album.genres = ["metal"];
// album.outOfPublication = true;

// const id = await albumRepository.save(album);
// const id = await repository.save(album);

const id = await repository.createAndSave({
  artist: "Mushroomhead",
  title: "The Righteous & The Butterfly",
  title: "The Righteous & The Butterfly",
  year: 2014,
  genres: ["metal"],
  outOfPublication: true
});

console.log(id);


여전히,

/home/user/Projects/web/ARMS-redis/node_modules/redis-om/dist/index.js:907
    const id = this.schema.generateId();
                           ^

TypeError: this.schema.generateId is not a function
    at Repository.createEntity (/home/user/Projects/web/ARMS-redis/node_modules/redis-om/dist/index.js:907:28)
    at Repository.createAndSave (/home/user/Projects/web/ARMS-redis/node_modules/redis-om/dist/index.js:915:25)
    at file:///home/user/Projects/web/ARMS-redis/src/index.js:34:29
    at processTicksAndRejections (node:internal/process/task_queues:96:5)


이 순간 나는 두개골(고스트 라이더)에 스트레스와 피로를 느낄 수 있다. 나는 애니메이션을 보고 조금 걸었다. 먼저 해커톤에 대한 메인 기사로 돌아가서 단서를 찾기 위해 조금씩 훑어보기 시작했습니다. redis.io . 둘 사이에 다른 점이 있습니까redis.com ? 몰라서 말씀드릴 수가 없었습니다. redis.io , 나는 The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.를 읽었고 전에 읽은 적이 있다는 것을 기억했습니다. 개발자라면 누구나 하듯이 DOCS를 클릭합니다. 내가 어디에 있는지 알기도 전에 redis-stack . 나는 redis-stack이 redis와 같을 뿐만 아니라 Extends Redis with modern data models and processing engines. Includes documentation for the bundled Redis modules and RedisInsight.
결론적으로, 나는 하루 종일 잘못된 방향을 바라보며 옳은 일을 하면서 낭비했습니다. redis-stack을 설치하고 이 솔루션을 사용하여 다른 문제Could not create server TCP listening socket *:6379를 수정했습니다.

결과적으로 자겠습니다. 내일은 잘 할 것 같아요.

좋은 웹페이지 즐겨찾기