Не удается перебрать идентификатор массива объектов внутри метода URL руля - node.js - PullRequest
0 голосов
/ 10 мая 2018

Поэкспериментируйте с методами REST http в node.js, используя пакет метода-переопределения, экспресс-и экспресс-руль. Как ни странно, я могу перебирать массив объектов с помощью рулей, но когда я пытаюсь назначить определенный идентификатор методу url, он назначит только 1-й элемент в этом цикле.

на html странице покажет фу 1 бар 2 foobar 3

когда нажатие кнопки независимо от выбранной кнопки будет считываться после нажатия кнопки следующим образом: Ваш идентификатор: 1

Может ли кто-нибудь указать, почему моим URL-адресам метода кнопок не назначается конкретный идентификатор, даже если моя страница может их прочитать?

server.js

const express = require('express');
const exphbs = require('express-handlebars');

const methodOverride = require('method-override');


const app = express();
app.use(methodOverride('_method'));

var PORT = process.env.PORT || 3000;

const products = [
    {id: 5, name: 'foo'},
    {id: 2, name: 'bar'},
    {id: 3, name: 'foobar'}
];

app.engine('handlebars', exphbs({
   defaultLayout: 'main'
}));

app.set('view engine', 'handlebars');

app.get('/', (req, res, next) => {
    res.render("index", { products });
});

app.delete('/:id?', (req, res, next) => {
    res.send('your id is: ' + req.params.id);
});

app.listen(PORT, ()=> console.log('This s*** is bananas'));

index.handlebars

<ul>
    {{#each products}}
        <li>{{this.name}}</li>
        <form method="POST" action="/{{this.id}}?_method=DELETE">
        <button type="submit">DELETE</button>
        <form>
    {{/each}}
</ul>

1 Ответ

0 голосов
/ 13 мая 2018

Ваша проблема в том, что ваш HTML неверен Вам не хватает символа "/" в теге закрывающей формы, </form>. Ваш браузер, пытаясь понять неверную разметку, отображает только первую форму с action=/1. Все кнопки отправляют эту форму.

...