<prompt> Unda programu kamili ya JavaScript kwa kutumia Vue.js na Express.js inayowaruhusu watumiaji kuunda, kuhariri na kufuta madokezo. Hifadhi madokezo katika hifadhidata ya MySQL na utekeleze utendaji wa utafutaji ili kupata madokezo kulingana na kichwa au maudhui.PLINFORMAT  <response>: const express needexpress;const bodyParser needbody-parser;const cors needcors;const Kumbuka need.models;const Op needsequelize;const app express;app.usecors;app.usebodyParser.json;app.usebodyParser.urlencodediliyopanuliwa: kweli ;app.get, req, res res.sendKaribu kwenye API ya Programu ya Vidokezo!;; Unda kidokezo kipyaapp.postapinotes, async req, res const title, content req.body; jaribu const note await Note.create title, content ; hali.asili201.tumanoti; kukamata kosa res.status500.tumaerror.message; ; Pata maelezo yote yenye utendaji wa hiari wa utafutajiapp.getapinotes, async req, res const tafuta req.query; jaribu hebu maelezo; ikiwa tafuta noti subiri Note.findAll wapi: Op.or: title: Op.like: search , maudhui: Op.like: search , , , ; nyengine maelezo await Note.findAll; tuma tenamaelezo; kukamata kosa res.status500.tumaerror.message; ; Sasisha dokezo kwa kitambulishoapp.putapinotes:id, async req, res const id req.params; const title, content req.body; jaribu const note await Note.findByPkid; ikiwa !note itarudisha res.status404.tumaDokezo halijapatikana; subiri note.update title, content ; res.tumanoti; kukamata kosa res.status500.tumaerror.message; ; Futa dokezo kwa kitambulishoapp.deleteapinotes:id, async req, res const id req.params; jaribu const note await Note.findByPkid; ikiwa !note itarudisha res.status404.tumaDokezo halijapatikana; subiri note.haribu; res.send ujumbe: Dokezo limefutwa kwa mafanikio ; kukamata kosa res.status500.tumaerror.message; ;const PORT process.env.PORT 3000;app.listenPORT, console.logSeva inafanya kazi kwenye bandari PORT;; 