<prompt> Tengeneza programu ya Node.js ambayo inasikiza kwenye port 3000 na kutumikia API ya RESTful yenye ncha za kuunda, kusoma, kusasisha na kufuta rekodi katika mkusanyiko wa MongoDB unaoitwa bidhaa. Kila rekodi ya bidhaa inapaswa kuwa na sehemu za jina, bei, na wingi.PLINFORMAT  <response>: const express needexpress;const mongoose needmongoose; Unganisha kwa MongoDBmongoose.connectmongodb:localhost:27017productsdb, useNewUrlParser: kweli, useUnifiedTopology: kweli, useFindAndModify: uongo,; Bainisha schema ya bidhaa na modeliconst productSchema new mongoose.Schema jina: kamba, bei: nambari, wingi: idadi,;const Product mongoose.modelBidhaa, productSchema; Anzisha programu ya Expressconst app express;app.useexpress.json; Miisho ya CRUD Unda bidhaa mpyaapp.postbidhaa, async req, res const product Bidhaa mpyareq.body; jaribu subiri product.save; hali.asili201.tumabidhaa; kukamata kosa res.status400.tumakosa; ; Soma bidhaa zoteapp.getbidhaa, async req, res jaribu const products wanasubiri Product.find; tuma tena bidhaa; kukamata kosa res.status500.tumakosa; ; Soma bidhaa moja kwa kitambulishoapp.getproducts:id, async req, res jaribu const product await Product.findByIdreq.params.id; ikiwa !bidhaa itarudisha hali.404.tuma; tuma tenabidhaa; kukamata kosa res.status500.tumakosa; ; Sasisha bidhaa kwa kitambulishoapp.patchproducts:id, async req, res jaribu const product await Product.findByIdAndUpdatereq.params.id, req.body, mpya: true ; ikiwa !bidhaa itarudisha hali.404.tuma; tuma tenabidhaa; kukamata kosa res.status400.tumakosa; ; Futa bidhaa kwa kitambulishoapp.deleteproducts:id, async req, res jaribu const product await Product.findByIdAndDeletereq.params.id; ikiwa !bidhaa itarudisha hali.404.tuma; tuma tenabidhaa; kukamata kosa res.status500.tumakosa; ; Anzisha sevaconst port process.env.PORT 3000;app.listenbandari, console.logSeva inayoendesha kwenye mlango wa port; 