У меня есть эта функция в бэкэнде моего приложения MERN (с M не для Mon go, но MySQL). Эта функция асинхронно выбирает все запасы в базе данных и возвращает их как обратный вызов.
getAllStocks: function(callback) {
var context = dbContext.create();
// First select the stock to get its price
context.query(`SELECT * from Stock`, function(err, result) {
if (err) throw err;
module.exports.stocks = callback(err, result);
});
return result;
}
Я попытался экспортировать обратный вызов в переменную в этой строке:
module.exports.stocks = callback(err, result);
И вызвать его в моем приложении React
import { stocks } from '../../Backend/StockFunctions';
import mysql from 'mysql';
import './App.css';
import React, { Component } from 'react'
export default class App extends Component {
constructor() {
super();
this.state = {
stocks: []
}
}
async componentDidMount() {
console.log(stocks);
}
I Я пробовал это таким образом, и он печатает пустой массив.
Я также попытался изменить функцию на это:
getAllStocks: function(callback) {
var context = dbContext.create();
// First select the stock to get its price
context.query(`SELECT * from Stock`, function(err, result) {
if (err) throw err;
callback(result);
// Make sure that the user has enough of the stock to sell it (amout <= total stock qty)
});
}
и вызвать его так:
async componentDidMount() {
getAllStocks(function(result) {
return result;
})
}
И затем возвращается ошибка:
Как мне это сделать?