Tengo un búfer de datos que es de aproximadamente 320 MB. Estoy tratando de guardarlo en la tabla del servidor SQL desde el nodo js.
¿Cuál es la mejor manera en que puedo hacer esto? Cuando trato de insertar los datos del búfer directamente, Cannot create a string longer than 0x1fffffe8 characters .
¿Qué puedo hacer para salvarlo?
Estos son mis datos de búfer
<Buffer 53 6f 75 72 63 65 53 63 68 65 6d 61 2c 43 6f 75 6e 74 72 79 4e 61 6d 65 2c 49 44 2c 41 4d 54 5f 45 58 43 4c 5f 54 41 58 2c 41 4d 54 5f 49 4e 43 4c 5f ... 340629006 more bytes>Estoy tratando de guardar estos datos en la base de datos usando la secuenciación como se muestra a continuación
const DBMODEL = require("../../../models/SaveBufferData") module.exports = async (req, res) => { try{ var bufdata = req.file.buffer; var fdata = fs.writeFile('files/uploaded_files/' + req.body.fileName, bufdata, "utf8", function (err) { console.log('errrrr',err) stream = fs.createReadStream('files/uploaded_files/' + req.body.fileName); // Read and display the file data on console stream.on('data', function (chunk) { console.log(chunk); }); stream.on('end', function(){ console.log('stream ended') }) stream.on('open', function(){ console.log('File opened') }); }) var response = await DBMODEL.SaveBufferData(req.body.fileId, bufdata); } catch (error) { console.log('errorerror',error) res.status(500).json(ResponseManager(false, error.message)); }Terminé con el siguiente error.
node:buffer:669 slice: (buf, start, end) => buf.hexSlice(start, end), ^ Error: Cannot create a string longer than 0x1fffffe8 characters at Object.slice (node:buffer:669:37) at Buffer.toString (node:buffer:811:14) at BLOB._stringify (C:\IWA-BACKEND\PRIMS-local\PRIMS - Iwa\BACKEND\node_modules\sequelize\dist\lib\data-types.js:423:23) at BLOB.stringify (C:\IWA-BACKEND\PRIMS-local\PRIMS - Iwa\BACKEND\node_modules\sequelize\dist\lib\data-types.js:22:19) at escape (C:\IWA-BACKEND\PRIMS-local\PRIMS - Iwa\BACKEND\node_modules\sequelize\dist\lib\sql-string.js:40:48) at C:\IWA-BACKEND\PRIMS-local\PRIMS - Iwa\BACKEND\node_modules\sequelize\dist\lib\sql-string.js:101:14 at String.replace (<anonymous>) at Object.formatNamedParameters (C:\IWA-BACKEND\PRIMS-local\PRIMS - Iwa\BACKEND\node_modules\sequelize\dist\lib\sql-string.js:96:14) at Object.formatNamedParameters (C:\IWA-BACKEND\PRIMS-local\PRIMS - Iwa\BACKEND\node_modules\sequelize\dist\lib\utils.js:112:20) at Sequelize.query (C:\IWA-BACKEND\PRIMS-local\PRIMS - Iwa\BACKEND\node_modules\sequelize\dist\lib\sequelize.js:283:21) { code: 'ERR_STRING_TOO_LONG' }Mirando la pila de llamadas, esto es lo que diagnostico que está sucediendo:
paso 2) es donde probablemente esté alcanzando los límites superiores de longitud de cadena de nodo
Intente lo siguiente para probar esta hipótesis
-> pruebe este punto final con un archivo de menor tamaño y siga incrementando el tamaño de dicho archivo,
si este punto final tiene éxito para tamaños de archivo más pequeños y falla después de alcanzar un cierto tamaño de archivo, podemos mencionar con alta probabilidad que el problema es la conversión de archivo a búfer a cadena (ya que estamos alcanzando el techo del tamaño permitido de cadena por ya sea el proceso del nodo o la memoria del sistema)