microlinkhq / keyvhq

Simple key-value storage with support for multiple backends.

Home Page:https://keyvhq.js.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Feature Request: Add `.has` method

Kikobeats opened this issue · comments

This is motivated to make the library more affordable to be adopted in user cases where you are already using Map or WeakMap.

In order to have a compatible API, keyv needs to add a . has method:

https://github.com/sindresorhus/mem/blob/main/index.ts#L63

I feel the addition of this new method will be done easily and the benefit could be huge.

In the worst scenario, it could be a sugar syntactic over .get:

const has = async (key) => await this.get(key) !== undefined

Although better if we can find a lightweight implementation per every store connector.

E.g., Redis can rely on EXISTS command so you don't need the value at all.

thoughts @Jytesh?

What should be the case if the user sets the value as undefined then?

We should also revalidate expiry keys in keyv

IMHO makes sense to consider undefined as an illegal value at .set since the undefined value is the value used by default when the value is not set.

If you really want to specify a nullish value, then use null

alright, makes sense