<prompt> Unda API ya Node.js REST ukitumia Express inayoauni shughuli za CRUD kwenye mkusanyiko wa vitu vya Book vilivyohifadhiwa katika hifadhidata ya MongoDB.PLINFORMAT  <response>: const express needexpress;const bodyParser needbody-parser;const mongoose needmongoose;const app express;app.usebodyParser.json; Unganisha kwa MongoDBmongoose.connectmongodb:localhost:27017bookstore, useNewUrlParser: kweli, useUnifiedTopology: kweli,; Fafanua schema ya Kitabu na mfanoconst bookSchema new mongoose.Schema kichwa: kamba, mwandishi: kamba, Tarehe iliyochapishwa: Tarehe, ukurasaHesabu: Nambari,;const Book mongoose.modelKitabu, kitabuSchema; Unda kitabu kipyaapp.postvitabu, async req, res const book Kitabu kipya req.body; jaribu subiri kitabu.hifadhi; hali.asili201.tumakitabu; kukamata kosa res.status400.tumakosa; ; Pata vitabu vyoteapp.getvitabu, async req, res jaribu const books await Book.find; tuma tenavitabu; kukamata kosa res.status500.tumakosa; ; Pata kitabu kwa kitambulishoapp.getbooks:id, async req, res jaribu const book await Book.findByIdreq.params.id; ikiwa !kitabu rudisha res.status404.tumaKitabu hakijapatikana; tuma tenakitabu; kukamata kosa res.status500.tumakosa; ; Sasisha kitabu kwa kitambulishoapp.putbooks:id, async req, res jaribu const book await Book.findByIdAndUpdatereq.params.id, req.body, mpya: kweli ; ikiwa !kitabu rudisha res.status404.tumaKitabu hakijapatikana; tuma tenakitabu; kukamata kosa res.status400.tumakosa; ; Futa kitabu kwa kitambulishoapp.deletebooks:id, async req, res jaribu const book await Book.findByIdAndDeletereq.params.id; ikiwa !kitabu rudisha res.status404.tumaKitabu hakijapatikana; tuma tenakitabu; kukamata kosa res.status500.tumakosa; ; Anzisha sevaconst port process.env.PORT 3000;app.listenbandari, console.logSeva inasikiliza kwenye bandari port; 