node中Buffer与字符串相加,发生了什么?

716 阅读1分钟

让你明明白白学知识,有代码,有讲解,抄的走,学的会!

// 创建一个Buffer
let b1 = Buffer.from('1')
let b2 = "2"

// true
console.log('是不是二进制数据--》',Buffer.isBuffer(b1))

// false 
console.log('跟一个字符串相加以后呢--》',Buffer.isBuffer(b1+b2))

let b3 = Buffer.from('3')
// false
console.log('2个Buffer相加呢-》',Buffer.isBuffer(b1+b3))

// string
console.log('typeof (b1+b3)', typeof (b1+b3))

运行结果:

从运行结果,我们可以看出

  1. 2个buffer相加,会调用toString方法,变成字符串的相加
  2. 字符串与Buffer的相结合,还是会先将Buffer转成字符串,再相加

所以,接下来的常见的POST请求中的,你应该知道,数据是什么类型?

const express = require('express')

const router = express.Router()

const app = express()

router.post('/api/uploadFile',(req, res)=> {
    let data = ''

    req.on('data', (chunk)=> {
        // 看这里的chunk
        console.log(Buffer.isBuffer(chunk)) // true -- 是 Buffer
        data += chunk
        console.log(Buffer.isBuffer(data)) // false--已经变成字符串了
    })

    req.on('end', (err)=> {
        if(err) throw err

         // 这里拿到的data 就是一个 【字符串类型】 的数据
    })
})

app.use(router)
app.listen(3001, ()=> {
    console.log('http://localhost:3001')
})