¿Es posible evitar obtener resultados del caché al llamar a una función envuelta en lodash _.memoize() ?
Por ejemplo
import { memoize } from "lodash"; export const getUserPost = memoize( async (userId, postId) => { const postRef = firestore .collection("posts") .doc(userId) .collection("userPosts") .doc(postId); const postDoc = await postRef.get(); ... return parseUserPost(postDoc); }, (userId, postId) => `[${userId},${postId}]` ); Si llamo a getUserPost("raul", "postId") , siempre obtendré resultados en caché si están en caché...
¿Es posible usar el método memoize con algún tipo de argumento para obtenerlo del servidor?
Algo como
getUserPost("raul", "postId", { cached: false });De forma predeterminada _.memoize() usa el primer parámetro ( userId en su caso) como la clave en el caché de memorización, o usa una resolución, como la que proporcionó:
(userId, postId) =>`[${userId},${postId}]`Puede eliminar esa clave del caché, cuando no desea que un valor específico devuelva el mismo resultado:
Ejemplo:
const fn = _.memoize(x => x + Math.ceil(Math.random() * 1000)) console.log(fn(1)) console.log(fn(1)) fn.cache.delete(1) // remove a paremter from the cache console.log(fn(1)) <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>