나는 redis 또는 무엇을하고 있습니까?
23487 단어 watercoolernoderedisredishackathon
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를 수정했습니다.
결과적으로 자겠습니다. 내일은 잘 할 것 같아요.
Reference
이 문제에 관하여(나는 redis 또는 무엇을하고 있습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/otumianempire/i-am-doing-redis-or-what-598j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)