ukryj menu
SPEC
aktualizacja: 2021-12-05 09:24:22
1. Opis zajęć
założenia tej wersji lekcji:
- wszystkie operacje na bazie danych oraz fetch po stronie klienta wykonywane są
z użyciem składni async/await
- użycie importów zamiast require
2. składnia imports zamiast require
utwórz w aplikacji plik package.json poleceniem
npm initkopiuj
"type": "module"
cały plik package.json powinien wyglądać jak poniżej
{
"name": "test",
"version": "1.0.0",
"description": "",
"type": "module",
"main": "server.js"
...
...
...
}
3. zmiany na serwerze expressa
warto przeglądnąć
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
import express from "express"kopiuj
const __dirname = path.resolve(); // potrzebne do sendFile
const app = express()
const PORT = 3000;kopiuj
4. podłączenie klienta mongodb
instalujemy sterownik mongodb (u mnie wersja 4.1.3)
patrz zaktualizowany package.json
npm install mongodbkopiuj
importy
import { MongoClient } from "mongodb";
const mongoClient = new MongoClient("mongodb://localhost:27017");kopiuj
przydatne później referencje do bazy i kolekcji
var currentDB
var currentCollkopiuj
po LISTEN wstawiamy
async function main() {
await mongoClient.connect();
console.log('+---------------- mongo podłączone!!!');
const db = mongoClient.db("db_name");
currentDB = db
const coll = db.collection("coll_name");
currentColl = coll
}
main()kopiuj
od teraz można pracować na ww zmiennych
5. plik Operations.js
dla uprządkowania aplikacji przenosimy wszystkie operacje na bazie danych do pliku Oparations.js
i załączamy na serwerze
import Opers from "./modules/Operations.js"kopiuj
poniżej fragmenty zawartości pliku Operations.js do dalszej rozbudowy
export default {
addUser: async function (collection, data) {
let resp = await collection.insertOne(data);
console.log(resp)
return resp
},
getAll: async function (collection) {
let resp = await collection.find({}).toArray();
console.log(resp)
return resp
},
...
...
...
}kopiuj
6. przykładowy routing na serwerze
na kliencie działamy z fetcha, z użyciem składni async/await
app.post("/add", async function (req, res) {
let resp = await Opers.addUser(currentColl, req.body)
console.log("out", resp)
res.send({ status: "add", resp: resp })
})
app.get("/all", async function (req, res) {
let resp = await Opers.getAll(currentColl)
console.log("out", resp)
res.send({ status: "all", resp: resp })
})kopiuj
7. dokumentacja
https://www.npmjs.com/package/mongodb
https://docs.mongodb.com/drivers/node/current/fundamentals/crud/write-operations/insert/
https://docs.mongodb.com/drivers/node/current/fundamentals/promises/