0

そのため、エクスプレスでmongo DBにバイト配列を取得するのに苦労しています。アプリでは、connect-mongo を使用して、express-session で収集されたセッション データを保存します。JSON であるすべての変数に対してすべてが正常に機能します。ただし、変数の 1 つは UINT8 バイト配列であり、5 MB になると失敗します。アプリでは、次を使用して mongo に生データを解析させます。

mongoose.connect(dbUrl, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true,
    useFindAndModify: false,
    promoteBuffers:true //----> Importante para armazenar os buffers na session!!!!!
});

コントローラーで、ブラウザーから UINT8 配列を取得し、それをセッションに保存します。

module.exports.getDataGPsolo =async (req, res) => {
if(req.get('Content-Type')==='application/octet-stream'){
    req.session.rawData=req.body;
    // the line send the UINT8 array to mongo
    req.session.fileNum =  Number.parseInt(req.get('fileNum'));
    return res.send('array recived')
}

別のルートでは、セッションから変数を取得する必要があるため、コントローラーはそれを使用して処理を行うことができます。

module.exports.processDataGPsolo = async (req, res) => {
    let data = []
    let timing=req.session.timing;
    parsedRawData= Buffer.from(req.session.rawData1); 

この最後の行は、コードがビークしたときであり、セッション ストレージから取得されたデータが 5 MB (最大サイズが必要) になると、完全に変更されます。ただし、小さいサイズの場合は問題なく機能します。どんな助けでも大歓迎です。

4

0 に答える 0