You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React前端传值至Node.js后端如何仅提取feed地址值?

解决后端获取Zustand存储地址的格式问题

你的问题出在后端没有正确解析请求体并提取feed字段,直接把请求对象当成了feed参数,所以控制台输出的是包含feed键的整个对象。以下是具体的修改方案:

核心问题分析

Node.js的API处理函数(不管是Express还是Next.js API路由)默认接收的是请求对象(req)和响应对象(res),而不是请求体里的单个字段。你之前直接把feed作为函数参数,导致这个参数实际是整个请求体对象,而非你需要的地址字符串。

具体修改步骤

情况1:使用Next.js API路由(匹配你的前端/api/getPrice请求路径)

修改后端的/api/getPrice.js文件:

exports.getPrice = async (req, res) => {
  // 从请求体中提取feed字段
  const { feed } = req.body;
  console.log(feed); // 现在会输出单独的地址字符串:0xD4a33860578De61DBAbDc8BFdb98FD742fA7028e

  // 恢复智能合约调用逻辑
  const provider = new ethers.providers.JsonRpcProvider(RPC);
  const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
  const contract = new ethers.Contract(CONTRACT, ABI, wallet);

  const price = await contract.getPrice(feed);
  console.log("Price:", price);

  // 返回结果给前端
  res.status(200).json({ price });
};

情况2:使用Express框架

如果你的后端基于Express,首先要确保添加JSON解析中间件,然后修改路由处理函数:

const express = require('express');
const app = express();

// 必须添加此中间件,才能解析JSON格式的请求体
app.use(express.json());

app.post('/api/getPrice', async (req, res) => {
  const { feed } = req.body;
  console.log(feed); // 输出单独的地址字符串

  // 智能合约调用逻辑...
  const provider = new ethers.providers.JsonRpcProvider(RPC);
  const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
  const contract = new ethers.Contract(CONTRACT, ABI, wallet);

  const price = await contract.getPrice(feed);
  console.log("Price:", price);

  res.json({ price });
});

前端代码无需修改

你前端的fetch请求写法是正确的,JSON.stringify({ feed })会把地址包装成标准JSON对象发送,后端只需要正确解析提取即可。

内容的提问来源于stack exchange,提问作者noubidev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 00:27:20