Как я могу поместить данные в случае змеи из базы данных MySQL и поместить их в поле значения для каждого элемента в списке в ejs с экспресс - PullRequest
1 голос
/ 11 мая 2019

Я готовлю форму, чтобы взять некоторые данные в базе данных для местного бизнеса.Мне удалось динамически получить данные из моей базы данных MySQL и поместить их в раскрывающийся список, но я не могу заполнить значение, которое идет с тегом option, в качестве значения, которое получает элемент, потому что в нем есть место.Я решил использовать lodash для преобразования данных в случай змеи, но я не могу заставить их попасть в поле значения.

Код App.js

const express = require("express");
const bodyParser = require("body-parser");
const db = require("./util/database");
const _ = require("lodash");

const app = express();

app.set("view engine", "ejs");

app.use(
  bodyParser.urlencoded({
    extended: true
  })
);

app.listen(3000, function() {
  console.log("Server Started at port 3000");
});

app.get("/", function(req, res) {
  db.execute("SELECT customerName FROM customers")
    .then(([rows, fieldData]) => {
      // console.log(_.snakeCase(rows[0].customerName));
      const map = rows.map(name => _.snakeCase(name.customerName));
      res.render("home.ejs", {
        customerName: rows,
        customerNameSnakeCase: map
      });
    })
    .catch(err => {
      console.log(err);
    });
});

app.post("/", function(req, res) {
  const quantity = req.body.quantity;
  const rate = req.body.rate;
  const amount = quantity * rate;

  res.render("another", {
    amountValue: amount
  });
});

home.ejsкод

<%- include("partials/header"); -%>
</head>

<body>

    <form class="form-control" action="/" method="post">
        <input type="date" name="date">
        <label for="salePurchase">Type of Transaction</label>
        <select required>
            <option value="sale">Sale</option>
            <option value="purchase">Purchase</option>
            <option value="other">Others</option>
            <option value="payment">Payment</option>
            <option value="receipt">Receipts</option>
        </select>
        <label for="vehicleNumber">Vehicle Number</label>
        <input type="number" , name="vehicleNumber">
        <label for="partyName">Party Name</label>

        <select>
            <% customerName.forEach((name) => { %>
            <option value=""><%= name.customerName %></option>
            <% }) %>
        </select>

        <select>

        </select>
        <label for="factory">Factory</label>
        <select>
            <option value="Butibori">Butibori</option>
            <option value="Hingna">Hingna</option>
        </select>
        <label for="group">Group</label>
        <select name='group'>
            <option value='finishedProduct'>Finished Products</option>
            <option value='scrapMaterial'>Scrap Material</option>
            <option value='rerollingMaterial'>Rerolling Material</option>
            <option value='coal'>Coal</option>
            <option value='machinery'>Machinery</option>
            <option value='freight'>Freight</option>
        </select>
        <label for="item">Item</label>
        <select name='item'>
            <option value='squareBar'>Square Bar</option>
            <option value='roundBar'>Round Bar</option>
            <option value='flatBar'>Flat Bar</option>
            <option value='angle'>Angle</option>
            <option value='gateChannel'>Gate Channel</option>
        </select>
        <label for="itemSpecifics">Item Specifics</label>
        <select name='sqaureBar'>
            <option value='6mmFixed'>6mm Fixed</option>
            <option value='6mmRandom'>6mm Random</option>
            <option value='8mmFixed'>8mm Fixed</option>
            <option value='8mmRandom'>8mm Random</option>
            <option value='10mmFixed'>10mm Fixed</option>
            <option value='10mmRandom'>10mm Random</option>
            <option value='12mmFixed'>12mm Fixed</option>
            <option value='12mmRandom'>12mm Random</option>
        </select>
        <input type="number" name="quantity" placeholder="Total Quantity">
        <input type="number" name="rate" placeholder="Rate per Ton">
        <input type="number" name="amount" placeholder="Total Amount">
        <input type="text" name="comments" placeholder="Comments">
        <button type="submit">Submit</button>
    </form>

    <%- include("partials/footer"); -%>

В данный момент я ничего не получаю в поле значения, но мне нужно имя клиента, которое создается в случае змеи.Кстати, в базе данных MySQL есть таблица клиентов с несколькими именами.

1 Ответ

0 голосов
/ 11 мая 2019

Разве вы не можете просто поместить оба значения на карту?

//App.js
const map = rows.map(name => {displayName: name.customerName, snakeCaseName: _.snakeCase(name.customerName)});

Затем вы можете опустить один из параметров в функции рендеринга:

//App.js
res.render("home.ejs", {
customerNames: map
});

И сделать это с помощью:

<select>
<% customerNames.forEach((name) => { %>
<option value=<%= name.snakeCaseName %>><%= name.displayName %></option>
<% }) %>
</select>
...