Я следую руководству по созданию приложения CRUD с использованием mongoDB, Express, JQuery и Node.js.Сейчас я пытаюсь добавить пользовательские функции и не могу ни отредактировать, ни получить документ, когда я отклоняюсь от кода, который я имитировал.Мне любопытно, что происходит.Я следовал за функцией удаления и редактирования, которая работала, чтобы создать новую функцию редактирования, чтобы позволить мне обновлять несколько полей и с другим пользовательским интерфейсом.Я также хочу, чтобы документ использовал поля для заполнения HTML различных блоков в разных частях сайта, но мне не удается вернуть документ.
Я заверил, что функции get и put работают в Postman.
Это то, что работает:
app.put('/:id',(req,res) =>{
const todoID = req.params.id;
const userInput = req.body;
db.getDB().collection(collection).findOneAndUpdate({_id:
db.getPrimaryKey(todoID)}, {$set: {todo: userInput.todo}},
{returnOriginal : false},(err,result)=>{
if(err)
console.log(err);
else{
res.json(result);
}
});
});
app.post('/',(req,res)=>{
const userInput = req.body;
db.getDB().collection(collection).insertOne(userInput,
(err,result)=>{
if(err)
console.log(err);
else
res.json({result: result, document: result.ops[0]});
});
});
app.delete('/:id',(req,res)=>{
const todoID = req.params.id;
db.getDB().collection(collection).findOneAndDelete({_id :
db.getPrimaryKey(todoID)},(err,result)=>{
if(err)
console.log(err);
else
res.json(result);
});
});
Это работает в почтальоне, но не в моем приложении:
app.get('/', (req,res)=>{
const todoID = req.params.id;
db.getDB().collection(collection).findOne({_id:
db.getPrimaryKey(todoID)}, (err,documents)=>{
if(err)
console.log(err);
else{
console.log(documents);
res.json(documents);
}
});
});
Это работает:
const deleteShipment = (shipment, divShipmentID, deleteID) =>{
let deleteBtn = $(`#${deleteID}`);
deleteBtn.click(()=>{
fetch(`/${shipment._id}`,{
method: "delete"
}).then((response)=>{
return response.json();
}).then((data)=>{
if(data.ok == 1){
$(`#${divShipmentID}`).remove();
}
});
});
}
ЭТО НЕ:
const openEditOptions = (shipment, editID) =>{
let editBtn = $(`#${editID}`);
editBtn.click(()=>{
console.log('activated');
fetch(`/${shipment._id}`,{method: "get"}).then((response)=>{
return response.json();
}).then((data)=>{
console.log(data);
readyEditForm(shipment);
});
});
}
Это HTML:
<button class="shipment-edit" id="edit_5c6759a05b4290e978136ea0"
type="button">Edit</button>
<button type="button" class="shipment-delete"
id="delete_5c6759a05b4290e978136ea0">Delete</button>
Я бы ожидал, что кнопка редактирования для этой конкретной "отправки" будет нажата при нажатиив консоль «активирована» и для возврата данных о доставке в консоль, а также в функцию readyEditForm.Ничего не произошло.