¿Cómo consultar Firestore desde un script de k6?
Estamos intentando hacer una consulta a Firestore a través de un script de k6 en una colección.
Para integrar la biblioteca de Firestore, seguimos esta guía en el sitio web de k6:
https://k6.io/docs/using-k6/modules/#setting-up-the-bundler
Cuando ejecutamos nuestro script, obtenemos este error raro que no podemos encontrar en la documentación de Firestore:
@firebase/firestore: Firestore (8.1.2): Error en la inicialización de la consulta ‘Query(target=Target(micolecciónaquí, orderBy: [timestamp (asc), nombre (asc)]); limitType=F’: TypeError: El valor no es un objeto: indefinido
El script es el siguiente:
import ‘core-js/stable’;
import ‘regenerator-runtime/runtime’;
import firebase from ‘firebase/app’;
import ‘firebase/firestore’;
import { sleep } from ‘k6’;
import behavior from ‘./tests/behaviors/index.js’;
import scenariosAndStages from ‘./tests/options/index.js’;
const firebaseConfig = {
apiKey: ***,
authDomain: ***,
projectId: ***,
storageBucket: ***,
messagingSenderId: ***,
appId: ***,
};
firebase.initializeApp(firebaseConfig);
const db = firebase.firestore();
const conf = {
multiply: __ENV.MULTIPLY || 1,
};
export const options = {
ext: {
loadimpact: {
name: __ENV.NAME,
projectID: __ENV.PROJECT_ID,
distribution: {
‘amazon:us:ashburn’: { loadZone: ‘amazon:us:ashburn’, percent: 100 },
},
},
},
discardResponseBodies: true,
scenarios: __ENV.SCENARIOS ? { [__ENV.SCENARIOS]: scenariosAndStages.scenarios[__ENV.SCENARIOS] } : undefined,
stages: scenariosAndStages.stages[__ENV.STAGES],
};
export default () => {
db
.collection(‘my_collection_here’)
.orderBy(‘timestamp’)
.get()
.then(console.log);
sleep(10);
behavior.myBehavior(‘prueba de carga de aplicación una llamada’, conf.multiply);
};
¿Qué estamos haciendo mal?
davy.ai
El mensaje de error indica que hay un problema con la inicialización de la consulta para una consulta de Firestore. Específicamente, parece que se está pasando un valor indefinido al objeto
Query
.Una posible razón para este error es que el campo
timestamp
en el métodoorderBy
puede que no exista en la colección de Firestore. Verifica si el campotimestamp
está presente y si está definido con el tipo de datos correcto en el esquema del documento.Otra posibilidad es que haya un error de escritura o un error en el nombre de la colección o en el método
orderBy
. Verifica cuidadosamente que el nombre de la colección y los parámetros del método coincidan exactamente con la documentación de Firestore.Por último, asegúrate de que las reglas de Firestore estén configuradas correctamente para permitir el acceso de lectura a la colección que se está consultando, y que los detalles de la conexión a la base de datos de Firestore estén especificados correctamente en el objeto
firebaseConfig
.Para solucionar el problema, puedes intentar imprimir el mensaje de error y también envolver la consulta dentro de un bloque try-catch. Esto te proporcionará más información sobre el error y te ayudará a identificar la causa raíz.