javascript - React Native - 违反不变性 : Objects are not valid as a React Child (Using Node JS for backend)

标签 javascript android node.js reactjs react-native

在这里,我尝试获取订单总和及其数量总和,其中我使用 Node JS 作为后端。问题是每当我运行代码时——我的获取函数似乎无法正常工作,或者我丢失了一些我不知道的东西。

但是使用 postman ,我的 API 正在处理预期的输出。但是如果我在我的 react native 代码中使用它,它会显示一些错误。

Sum using postman Quantity using postman

这是我的后端代码:

OrderNo.js(模型)//后端

var Task = {
    Sum:function(id,callback) {
        return db.query("SELECT SUM(order_amount) AS TotalAmountOrdered FROM orders where order_no=?",[id],callback);
    },
}

OrderNo.js(路由器)//后端

var Task = require('../models/OrderNo');
router.get('/ForSum/:id?', (req, res, next) => {
    Task.Sum(req.params.id,function(err,rows) {
        if(err) {
            res.json(err);
        }
        else {
            res.json(rows);
        }
    });
});

NumOrder.js(模型)//后端

var Task = {
    NumOrder:function(id,callback) {
        return db.query("SELECT SUM(order_quantity) AS TotalItemsOrdered FROM orders where order_no=?",[id],callback);
    },
}

NumOrder.js(路由器)//后端

var Task = require('../models/NumOrder');
router.get('/num/:id?', (req, res, next) => {
    Task.NumOrder(req.params.id,function(err,rows) {
        if(err) {
            res.json(err);
        }
        else {
            res.json(rows);
        }
    });
});

这是我的 React-Native 代码

export default class Settlement extends Component {
    constructor(props){
    super(props)
        this.state = {
            orderDet: this.props.navigation.state.params.orderDet,
            numOrder: [],
            TotalSum: [],
        };
    }
    fetchSum = async () => {
        const response = await fetch("http://192.168.254.104:3308/OrderNo/ForSum/" + this.state.orderDet)
        const json = await response.json()
        this.setState({ TotalSum: json })
    }
    fetchNumOrders = async () => {
        const response = await fetch("http://192.168.254.104:3308/NumOrder/num/" + this.state.orderDet )
        const json = await response.json()
        this.setState({ numOrder: json })
    }
    componentDidMount() {
        this.fetchNumOrders();
        this.fetchSum();
    }
    render() {
        return (
            <View>
                <Text>Number of Orders: { this.state.numOrder }</Text>
                <Text>Total Amount: ₱{ this.state.TotalSum }</Text>
            </View>
        )
    }
}

This is the error for Sum This is the error for Quantity

这是我的数据库

**PS:**我还在每个获取函数上尝试了“json[0].order_no ”,没有错误,但我的输出是空的。

enter image description here

DB

最佳答案

根据 Postman 中的响应对象,您需要执行以下操作

this.state = {
        orderDet: this.props.navigation.state.params.orderDet,
        numOrder: null,
        TotalSum: null,
};

fetchSum = async () => {
        const response = await fetch("http://192.168.254.104:3308/OrderNo/ForSum/" + this.state.orderDet)
        const json = await response.json()
        this.setState({ TotalSum: json[0].TotalAmountOrdered })
    }

fetchNumOrders = async () => {
        const response = await fetch("http://192.168.254.104:3308/NumOrder/num/" + this.state.orderDet )
        const json = await response.json()
        this.setState({ numOrder: json[0].TotalItemsOrdered })
    }

关于javascript - React Native - 违反不变性 : Objects are not valid as a React Child (Using Node JS for backend),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52346989/

相关文章:

javascript - 使用 jQuery 动态地垂直和水平居中 div

javascript - 我的 HTTP over AJAX 有什么问题 (javascript)

javascript - 检查客户端是否单击仅在 CSS 文件中定义的图像,例如类的背景

java - 实现 onClickListener 不起作用

iphone - 从 MAC 地址识别设备类型

node.js - REST API 服务器困境

javascript - 带有 esc 键关闭弹出窗口的 VanillaJS 问题

android - 从@aar、gradle 依赖项中排除包/类

javascript - 翻转操作数时,将空数组与空对象相加会产生不同的结果

mysql - Node : MySQL returns inaccurate decimal values