На странице ресторанов есть таблица, в которой отображаются данные зарегистрированных ресторанов, первое поле - кнопка для удаления непосредственно в базе данных. Второе поле таблицы - это кнопка go для редактирования страницы. View index.pug:
each restaurante in restaurantes
tr
td
form(method='post' action='/restaurante/:id/delete')
button.btn.btn-primary(type='submit', name='id' value='#{restaurante._id}')
img(src="images/del.png", alt="", width="20px", height="20px")
td
a(href='/restaurantes/edit/:#{restaurante._id}')
img(src="images/edit.png", alt="", width="20px", height="20px")
td #{restaurante.nome}
маршрутные рестораны:
restauranteRoutes.post('/restaurante/:id/delete', RestauranteController.delete);
restauranteRoutes.post('/restaurante/:id/update', RestauranteController.update);
restauranteController:
public async delete(req: Request, res: Response) {
Restaurante.deleteOne({ _id: req.params.id }, (err) => {
if(err){
res.send(err);
console.log(err);
}
else{
req.flash('sucess','Restaurante deletado com sucesso');
res.redirect('/restaurantes');
}
});
}
public async update(req: Request, res: Response) {
Restaurante.findOneAndUpdate({ _id: req.params.id }, req.body, { new: true }, (err, contact) => {
if(err){
res.send(err);
}
res.json(contact);
});
}
При удалении отображается ошибка:
{"stringValue":"\":id\"","kind":"ObjectId","value":":id","path":"_id","reason":{},"message":"Cast to ObjectId failed for value \":id\" at path \"_id\" for model \"Restaurante\"","name":"CastError"}
pug:
ОБНОВЛЕНИЕ: Мне удалось сделать удаление, например, так:
form(method='post' action='/restaurantes/delete/' + restaurante._id)
<input type="image" src="images/del.png" alt="Submit", width="20px", height="20px" name="_id">
маршрут:
restauranteRoutes.post('/restaurantes/delete/:id', RestauranteController.delete);
restauranteController:
public async delete(req: Request, res: Response) {
var id = req.params.id;
Restaurante.deleteOne({
"_id": id
}, (err) => {
if (err) {
res.send("Falha ao remover restaurante.");
}
else {
// And forward to success page
req.flash('sucess','Restaurante removido com sucesso');
return res.redirect('/restaurantes');
}
});
}
Тем не менее, теперь работает на странице edit.pug; Я не могу придать ресторану ценность. Nome появляется в поле Nome:
form(method='post' action='/restaurantes/update' style="margin-top: 2%")
div.form-group
label(for='name') Nome do restaurante:
input(type='text', placeholder='Nome do restaurante', name='nome', value=restaurante.nome)
a(href="/restaurantes", class="btn btn-primary btn-lg" style='margin-left: 10px;') Cancelar
button.btn.btn-primary(type='submit' style='margin-left: 10px;') Atualizar
route:
restauranteRoutes.get('/restaurantes/edit/:id', RestauranteController.edit);
контроллер:
public async edit(req: Request, res: Response){
Restaurante.find({ _id: req.params.id }, (err, restaurante) => {
console.log(restaurante);
res.render('./restaurantes/edit',{
basedir : join(__dirname, '..', 'views'),
restaurante: restaurante})
})
};
console.log (restaurante) показывает мне, что данные извлекается, но я не могу получить его в поле зрения.