'use strict';
import { Component, Inject } from '@nestjs/common';
import { createClient } from 'redis';
@Component()
export class UsersServices {
//第一個參數給定port,第二個參數給定host
private readonly client = createClient(6379, "127.0.0.1");
constructor() { }
//查詢單筆
public async findById(ID): Promise<any> {
return new Promise((resolve, reject) => {
this.client.hgetall(ID, function (error, res) {
if (error) {
reject(error);
} else {
resolve(res);
}
});
})
}
//新增
public async create(users: any): Promise<any> {
return new Promise((resolve, reject) => {
this.client.hmset(`${users.ID}`, users, function (error, res) {
if (error) {
reject(error);
} else {
resolve(res);
}
});
})
}
//更新
public async update(ID: number, newValue: any): Promise<any> {
return new Promise((resolve, reject) => {
this.client.hmset(`${ID}`, newValue, function (error, res) {
if (error) {
reject(error);
} else {
resolve(res);
}
});
})
}
//刪除
public async delete(ID: number): Promise<any> {
return new Promise((resolve, reject) => {
this.client.del(`${ID}`, function (error, res) {
if (error) {
reject(error);
} else {
resolve(res);
}
});
})
}
}
最外層沒有
this.client.select()
,預設會是操作db0。
新增
對http://localhost:3000/users 做POST請求,結果如下。
查詢單筆
對http://localhost:3000/users/1 做GET請求,結果如下。
修改單筆
對http://localhost:3000/users/1 做PATCH請求,結果如下。
刪除單筆
對http://localhost:3000/users/1 做DELETE請求,結果如下。
筆者目前還沒看到對Redis的ORM或Entity的東西可以用,所以就簡單實作功能而已。這次的實作比較像是在寫一般的JavaScript,少了Model就少了好用的型態檢查,加上nestjs也沒有對redis生好用的API,稍微可惜了點。