javascript - Express服务器响应是一个流,如何使其成为字符串/json

标签 javascript node.js express response

我正在POST将数据发送到我的express (v.4+) 服务器。但是,我在浏览器中得到的响应采用以下形式:

响应 {type: "cors", url: "http://localhost:1111/", status: 200, ok: true, …}

具体来说,响应的body是一个ReadbleStream,而不是我期望的jsonstring我发回的回复。

服务器代码是:

mongoose.connect('mongodb://localhost/block');
const app = express();
app.set('port', 1111);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use('/', (req, res, next) => { // for cors
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Credentials', true);
  next();
});

app.post('/', (req, res) => {
  const { dataType, table } = req.body;
  const { rows } = table;
  const log = {
    msgArray: []
  };
  function saveData(dbModel) {
    rows.forEach(row => {
      row.data_initiated = new Date();
      row.status = 'initiated';
      const entry = new dbModel(row);
      entry.save(err => {
        if (err) {
          log.msgArray.push({ err });
        }
        log.msgArray.push({
          msg: 'saved!'
        });
      });
    });
  }
  if (dataType === 'Contract') {
    saveData(Contract);
  } else if (dataType === 'Commodity') {
    saveData(Commodity);
  } else {
    saveData(Client);
  }
  res.send(log).end();

我在客户端使用fetchPOST数据。

如何才能正确地将 json/string 发送回用户?

谢谢

最佳答案

当使用fetch时,响应必须转换为JSON并返回。在接下来的then中,可以使用转换后的值。

fetch( url, config)
  .then( res => res.json())
  .then( json => {
    console.log( json );
    ...
  }

值得一提的是,这与我们在使用 Axios.js(基于 Promise 的 AJAX 库)时处理响应的方式有点不同。

P.S:我更新了问题以修复代码,以便正确发送响应。

关于javascript - Express服务器响应是一个流,如何使其成为字符串/json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49922484/

相关文章:

node.js - "How to get ' 父级到子级 ' relation with mongodb aggregation"

javascript - 保存 AJAX 调用返回的 Blob(可能是数据!)到 Azure Blob 存储会创建损坏的图像

javascript - jQuery 触发事件后停止事件传播

node.js - NodeJS MongoDB 循环可尾游标

javascript - 尝试在 nodejs 中重新创建工作的 java 加密方法

javascript - TypeORM 自定义装饰器

javascript - 我正在尝试将 pdf 文件从 Node 服务器下载到 React 客户端,但是当我打开它时,它显示空白

node.js - 如何将 Sails.js 应用程序安装为快速中间件

javascript - 如何使用 angularjs 将多个表单数据一次性发送到服务器?

javascript - ES6 数组交换的时间/空间复杂度是多少?