Estoy usando nedb como base de datos para un pequeño bot de discordia que he creado. Descargado a través npm install nedb --save y configurado en el archivo principal con:
const { callbackify } = require('util'); var db = new Datastore('botDB.db'); db.loadDatabase();Además, estoy usando estas funciones de búsqueda para implementar una lista inicial dentro de la base de datos y buscar personas dentro de la base de datos.
function findPlayer(params, callback) { db.find({name:params}, (err,docs)=> { callback(docs); }); } findPlayer('list', function(users){ if (!users[0]) { let players = { name:'list', list:[] }; db.insert(players,function(err,newDoc){}); } })Finalmente, creo un comando para agregar a alguien a la base de datos. Con el siguiente código colocado como una devolución de llamada dentro de una función findPlayer.
let updateData = { name:key, display:args[0], socialCredit: 0, games: [] } db.insert(updateData,function(err,newDoc){ message.reply("Added you to the database.") console.log(err) }); findInList(key, function(users){ if(!users[0]) { db.update({name:'list'},{$push:{list:key}},{},function(){}); } })Cuando ejecuto el código y escribo el comando, la consola registra este error.
RangeError: Maximum call stack size exceeded at Object.isArray (<anonymous>) at deepCopy (C:\Users\ME\Desktop\Editing\Coding Projects\Discod Bot\node_modules\nedb\lib\model.js:120:12) at C:\Users\ME\Desktop\Editing\Coding Projects\Discod Bot\node_modules\nedb\lib\model.js:130:18 at Array.forEach (<anonymous>) at deepCopy (C:\Users\ME\Desktop\Editing\Coding Projects\Discod Bot\node_modules\nedb\lib\model.js:128:22) at C:\Users\ME\Desktop\Editing\Coding Projects\Discod Bot\node_modules\nedb\lib\model.js:130:18 at Array.forEach (<anonymous>) at deepCopy (C:\Users\ME\Desktop\Editing\Coding Projects\Discod Bot\node_modules\nedb\lib\model.js:128:22) at C:\Users\ME\Desktop\Editing\Coding Projects\Discod Bot\node_modules\nedb\lib\model.js:130:18 at Array.forEach (<anonymous>)Al investigar este error, la mayoría de los resultados con los que me he encontrado han estado usando recursividad de alguna forma, y el tamaño de la pila es 1000 o algo ridículo cuando estoy implementando 1 objeto en una base de datos casi completamente vacía. Tengo otro comando que es muy similar que se implementa correctamente en la base de datos, y no puedo encontrar un factor distintivo entre las dos funciones que cambiaría su funcionamiento, ambas tienen el mismo formato.