#node.js #mongodb #express #mongoose #mongoose-schema
Вопрос:
У меня есть этот код в моем main.app:
app.get('/admin_panel', isAdm, async (req, res)=>{
var records = await add_joke.find({});
res.render('admin_panel', { recs: records });
})
После этого у меня есть и файл ejs с именем admin_panel с этим кодом:
<% for(var i in recs){ %>
<div class="the_div_of_joke mt-5">
<p class="titleOfJoke text-center"><%= recs[i].title %></p>
<p class="glumaAdev text-center"><%= recs[i].description %></p>
<a href="/profiles?username=<%= recs[i].post_user %>" class="text-right">By
<%=recs[i].post_user %></a>
<form action="/admin_panel" method="post">
<input type="hidden" name="id_post" value="<%= recs[i].id %>">
<input type="submit" value="Delete">
</form>
</div>
<% } %>
И что отправить на удаление — это:
app.post('/admin_panel', async (req, res)=>{
var the_records = req.body;
console.log(the_records);
var the_alg_find = await add_joke.deleteOne({id: the_records.id_post});
console.log(the_alg_find);
res.redirect('/admin_panel');
})
Проблема в том, что эта форма post предоставляет мне оставшуюся часть идентификатора первого сообщения в базе данных для всех сообщений, есть ли другой способ выбрать определенный элемент из итерации, подобной этому примеру?
Спасибо!
Комментарии:
1. Действительно ли записи имеют разные «id» или они одинаковые?
2. Вот коллекция: ibb.co/QMn1ZqG
Ответ №1:
Чтобы лучше понять это, вам, вероятно, следует поделиться своей схемой сбора
Комментарии:
1. Схема: ibb.co/xjHVtGs
2. Спасибо, что поделились схемой. Согласно вашей схеме, у вас есть
{_id: ObjectId(), title: string, desc: string,...}
so в вашей HTML-форме, которую вы должны использоватьvalue="<%= recs[i]._id %>"
вместо
Ответ №2:
На скриншоте, который вы опубликовали, документы в базе данных не имеют id
поля. Поэтому вы не можете ссылаться на recs[i].id
, и запросы на { id: somevalue }
не будут работать. Вы имели в виду использовать _id
поле, вместо этого?