首页 > 解决方案 > 如何使用流以块的形式发送 JSON 数据?

问题描述

我有一个要求通过调用 POST API 将 MongoDB 集合数据以块的形式从一个微服务发送到另一个微服务

所以,我试过这个

微服务 - A(接受数据并存储在数据库中)

app.post("/savedata", async(req, res) => {
    console.log("Body => %o", req.body);
    // insert data into db 
    res.status(200).send({status: "ok"});
});

微服务-B(从mongo获取数据并发布到微服务-A)

app.post("/postdata", async(req, res) => {
    let db = await client.db("Student");
    let collection = db.collection("details");
    let query = [
        {
            "$project": {
                _id:0
            }
        }
    ];
    let mongoStream = collection.aggregate(query).stream();
    const url = "http://microservice_A_HOST/savedata"; 
    axios({
        url: url,
        method: "post",
        data: mongoStream,
        headers: {
            'Content-Type': 'application/json'
        }
    }).then((response) => {
        console.log("Resp %j =>", response.status);
    }).catch(err => {
        console.log("err => ", err);
    });
    res.status(200).send({status: "ok"});
});

我收到此错误

TypeError: data should be a string, Buffer or Uint8Array
    at RedirectableRequest.write (/root/sample_code/node_modules/follow-redirects/index.js:84:11)
    at AggregationCursor.ondata (_stream_readable.js:726:22)
    at AggregationCursor.emit (events.js:210:5)
    at addChunk (_stream_readable.js:308:12)
    at readableAddChunk (_stream_readable.js:289:11)
    at AggregationCursor.Readable.push (_stream_readable.js:223:10)

请帮帮我谢谢

标签: node.jsjsonmongodbstreaming

解决方案


推荐阅读