Mysql 执行helper函数以显示数据-React,Express
我有一个helper函数,它基本上是基于 在product category_id和categories表中的id上:Mysql 执行helper函数以显示数据-React,Express,mysql,reactjs,express,sequelize.js,Mysql,Reactjs,Express,Sequelize.js,我有一个helper函数,它基本上是基于 在product category_id和categories表中的id上: const selectName = function(id){ sequelize.query(`SELECT c.name FROM categories as c WHERE EXISTS (SELECT 1 FROM product as p WHERE c.id = '${id}')`, { type: sequelize.QueryTypes.SELECT})
const selectName = function(id){
sequelize.query(`SELECT c.name FROM categories as c WHERE EXISTS (SELECT 1 FROM product as p WHERE c.id = '${id}')`, { type: sequelize.QueryTypes.SELECT})
.then(cnames => {
console.log('cnames via id >>>>>>>', cnames)
});
};
如果传入的id等于类别的id,则上面的代码将返回一个名称
然后在我的express文件中,我将其设置为在我的前端调用它:
app.post('/api/selectName', (req, res) => {
helper.selectName(req.body.category_id);
res.end();
});
在我的react中,我已经设置了一个函数,用于提取产品列表,其中包含名称、金额和类别id
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
pdata: [],
};
this.selectName= this.selectName.bind(this);
}
pullProducts() {
axios
.get('/api/products')
.then(myData => {
this.setState({
pdata: myData.data
});
})
.catch(err => console.log(err));
}
componentDidMount() {
this.pullProducts();
}
我还尝试使用selectName函数调用我在上面创建的函数:
selectName(id){
axios
.post('/api/selectName', {
category_id: id
})
.then( () => this.pullProducts() )
.catch(err => console.log(err));
}
我希望此函数将根据传递的category_id返回类别的名称,并检查categories和id中的等效id,然后返回名称
因此,在我的productlist组件中,我传入了以下函数:
<TransactionList tdata={this.state.cdata} selectName={this.selectName}/>
然后在实际组件中,我尝试调用functin进行选择:
<div className="c-data">{this.props.item.pname}</div>
<div className="c-data">{this.props.item.amount}</div>
<div className="c-data">{this.selectName(this.props.item.category_id)}</div>
{this.props.item.pname}
{this.props.item.amount}
{this.selectName(this.props.item.category_id)}
但它只是返回了一个错误,上面写着:TypeError:this.selectTransactionViaCategoryId不是一个函数
我的目标是:在调用函数的div中,我希望返回传入的具有等效id的类别的名称。如果该行中没有类别id,则必须显示“无id”
我如何做到这一点?我做错了什么?如果该行中没有category_id,它必须显示“no id”,该怎么办
抱歉,这里是新手。有几件事可以帮你做你想做的事:
- 在
中,您应该使用TransactionList
而不是this.props.selectName
(除非组件中有字段) 调用这个。选择name
)selectName
- 执行此操作时:
您希望函数返回“category”的名称,同时返回{this.selectName(this.props.item.category_id)}
未定义的
- 解决这一问题的一种方法是将父组件的状态设置为后端(
)返回的任何值,并将其作为道具传递给/api/selectName
,而不是在TransactionList
函数中调用render
(例如,内部selectName
)componentDidMount