Как вставить данные React Array в Mysql с помощью Ax ios & Express? - PullRequest
0 голосов
/ 03 апреля 2020

Мне нужно вставить данные рецепта в базу данных mySQL, но я изо всех сил пытаюсь вставить его с данными массива.

У меня есть 2 состояния, 1 состояние массива для хранения лекарств. I pu sh, затем отправьте значения в ax ios после завершения и 1 состояние для сохранения выбранного лекарства.

Пример моих опций: использование response-select

const medicine = [
  { id_obat: '123', label: 'Amoxcilin 300mg' },
  { id_obat: '321', label: 'Ibuprofen 500ml' }
];

Коды реакции:

  const [values, setValues] = useState([]);
  const [meds, setMeds] = useState({
    obat: {},
    cara_pakai: '',
    kuantitas: ''
  });

  const initialState = {
    obat: {},
    cara_pakai: '',
    kuantitas: ''
  };

  const handleChange = obat => {
    setMeds({ ...meds, ['obat']: obat });
  };

  const addMed = () => {
    setValues([...values, meds]);
    setMeds({ ...initialState });
  };

  const onSubmit = e => {
    e.preventDefault();
    addPrescript(values);
  };

Мой топор ios действие, чтобы отправить его в мой API:

export const addPrescript = values => async dispatch => {
  const config = {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  };

  const form = qs.stringify(values);

  try {
    const res = await axios.post('/api/prescription', form, config);

    dispatch({ type: ADD_PRESCRIPT, payload: res.data });

    dispatch(setAlert('Submit Success', 'success', 3000));
  } catch (err) {
    let errors = err.response.data.errors;
    if (errors) {
      errors.forEach(error => dispatch(setAlert(error.msg, 'danger')));
    }
  }
};

Мой контроллер рецептов:

exports.createPrescription = async (req, res) => {
  const { id_obat, cara_pakai, kuantitas, deskripsi } = req.body;

  const p_value = {
    deskripsi: deskripsi
  };

  const p_sql = 'INSERT INTO resep SET ?';
  const d_sql = 'INSERT INTO detail_resep SET ?';

  conn.query(p_sql, p_value, (error, p_result) => {
    if (error) throw error;
    let d_value = [
      {
        id_resep: p_result.insertId,
        id_obat: id_obat,
        cara_pakai: cara_pakai,
        kuantitas: kuantitas
      }
    ];
    conn.query(d_sql, [d_value], (error, d_result) => {
      if (error) throw error;
      res.status(200).json({
        values: d_result
      });
    });
  });
};

Мой внутренний сервер продолжает посылать мне сообщение об ошибке [У вас ошибка в вашем синтаксисе SQL], я не знаю, как ее решить.

мой API требуется req.body для отправки является | id_resep | id_obat | cara_pakai | куантитас | быть успешным Я не знаю, если я не так с stringify. Моя первая работа с массивами:>

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 03 апреля 2020

похоже на приведенный ниже оператор должен изменить

const p_sql = 'INSERT INTO resep SET ?';
const d_sql = 'INSERT INTO detail_resep SET ?';

на

const p_sql = 'INSERT INTO resep( {columnname}) values({value1,value2})';
const d_sql = 'INSERT INTO detail_resep ( {columnname}) values({value1,value2}))';

изменить {имя столбца} на имя вашего столбца и соответствующие значения в {значение}

В основном синтаксис оператора вставки здесь не верен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...