diff --git a/Aufgaben/Aufgabe_11_2020-07-08/client.js b/Aufgaben/Aufgabe_11_2020-07-08/client.js new file mode 100644 index 0000000..a1e4da7 --- /dev/null +++ b/Aufgaben/Aufgabe_11_2020-07-08/client.js @@ -0,0 +1,68 @@ +"use strict"; +//mongodb + srv://AdminForUse:XV8MXEdBYuwXtQnc@ichstudieremitgis-jfrz9.mongodb.net/IchStudiereMitGiS?retryWrites=true&w=majority +//http://localhost:8100 +//https://theoneandgis.herokuapp.com +var clientSide; +(function (clientSide) { + document.querySelector("#abschicken").addEventListener("click", sendData); + function sendData() { + communicate("https://theoneandgis.herokuapp.com", "mongo", "send", ""); + } + document.querySelector("#abfragen").addEventListener("click", retrieveData); + function retrieveData() { + communicate("https://theoneandgis.herokuapp.com", "mongo", "retrieve", ""); + } + function removeData(_event) { + let target = _event.target; + /*console.log(target.getAttribute("thisEntry")! ); + let entry: string = target.getAttribute("thisEntry")!; + console.log("entry: ", entry);*/ + let id = target.getAttribute("thisEntry"); + communicate("https://theoneandgis.herokuapp.com", "mongo", "remove", id); + } + async function communicate(_baseUrl, _aim, _task, _id) { + let formData = new FormData(document.forms[0]); + let url = ""; + if (_id == "") { + //tslint:disable-next-line: no-any + let query = new URLSearchParams(formData); + url = _baseUrl + "/" + _aim + "/" + _task + "?" + query.toString(); + } + else { + url = _baseUrl + "/" + _aim + "/" + _task + "?" + "_id=" + `${_id}`; + } + let response = await fetch(url); + let jsonResponse = await response.json(); + if (_task == "send") { + let jsonString = JSON.stringify(jsonResponse); + document.querySelector("#divResponse").innerHTML = jsonString; + //console.log(jsonResponse[0].vorname + " " + jsonResponse[0].nachname + " " + jsonResponse[0].geburtsjahr); + } + if (_task == "retrieve") { + let jsonString = formatCollection(jsonResponse); + document.querySelector("#divDatabase").innerHTML = jsonString; + addRemoveFunction(); + } + document.getElementById("myForm").reset(); + } + function formatCollection(_jsonResponse) { + let jsonString = ""; + for (let index = 0; index <= _jsonResponse.length; index++) { + if (_jsonResponse[index]) { + jsonString += `
`; + let current = _jsonResponse[index]; + for (let key in current) { + jsonString += key + ": " + JSON.stringify(current[key]) + "
"; + } + jsonString += "
"; + } + } + return jsonString; + } + function addRemoveFunction() { + let removeButtons = document.querySelectorAll(".removeButton"); + for (const iterator of removeButtons) + iterator.addEventListener("click", removeData); + } +})(clientSide || (clientSide = {})); +//# sourceMappingURL=client.js.map \ No newline at end of file diff --git a/Aufgaben/Aufgabe_11_2020-07-08/client.js.map b/Aufgaben/Aufgabe_11_2020-07-08/client.js.map new file mode 100644 index 0000000..c56448c --- /dev/null +++ b/Aufgaben/Aufgabe_11_2020-07-08/client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"client.js","sourceRoot":"","sources":["client.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/Aufgaben/Aufgabe_11_2020-07-08/client.ts b/Aufgaben/Aufgabe_11_2020-07-08/client.ts new file mode 100644 index 0000000..fd0ec27 --- /dev/null +++ b/Aufgaben/Aufgabe_11_2020-07-08/client.ts @@ -0,0 +1,85 @@ +//mongodb + srv://AdminForUse:XV8MXEdBYuwXtQnc@ichstudieremitgis-jfrz9.mongodb.net/IchStudiereMitGiS?retryWrites=true&w=majority +//http://localhost:8100 +//https://theoneandgis.herokuapp.com + +namespace clientSide { + + interface Personalien { + [type: string]: string | string[] | number | undefined; + } + + (document.querySelector("#abschicken")).addEventListener("click", sendData); + function sendData(): void { + communicate("https://theoneandgis.herokuapp.com", "mongo", "send", ""); + } + + (document.querySelector("#abfragen")).addEventListener("click", retrieveData); + function retrieveData(): void { + communicate("https://theoneandgis.herokuapp.com", "mongo", "retrieve", ""); + } + + function removeData(_event: Event): void { + let target: HTMLElement = (_event.target); + /*console.log(target.getAttribute("thisEntry")! ); + let entry: string = target.getAttribute("thisEntry")!; + console.log("entry: ", entry);*/ + let id: string = target.getAttribute("thisEntry")!; + communicate("https://theoneandgis.herokuapp.com", "mongo", "remove", id); + } + + interface Personalien { + vorname: string; + nachname: string; + geburtsjahr: number; + } + + async function communicate(_baseUrl: string, _aim: string , _task: string, _id: string): Promise { + let formData: FormData = new FormData(document.forms[0]); + let url: string = ""; + if (_id == "") { + //tslint:disable-next-line: no-any + let query: URLSearchParams = new URLSearchParams(formData); + url = _baseUrl + "/" + _aim + "/" + _task + "?" + query.toString(); + } else { + url = _baseUrl + "/" + _aim + "/" + _task + "?" + "_id=" + `${_id}`; + } + let response: Response = await fetch(url); + let jsonResponse: Personalien[] = await response.json(); + + if (_task == "send") { + let jsonString: string = JSON.stringify(jsonResponse); + (document.querySelector("#divResponse")).innerHTML = jsonString; + //console.log(jsonResponse[0].vorname + " " + jsonResponse[0].nachname + " " + jsonResponse[0].geburtsjahr); + } + if (_task == "retrieve") { + let jsonString: string = formatCollection(jsonResponse); + (document.querySelector("#divDatabase")).innerHTML = jsonString; + addRemoveFunction(); + } + + (document.getElementById("myForm")).reset(); + } + + function formatCollection(_jsonResponse: Personalien[]): string { + let jsonString: string = ""; + for (let index: number = 0; index <= _jsonResponse.length; index++) { + if (_jsonResponse[index]) { + jsonString += `
`; + let current: Personalien = _jsonResponse[index]; + for (let key in current) { + jsonString += key + ": " + JSON.stringify(current[key]) + "
"; + } + jsonString += "
"; + } + } + return jsonString; + } + + function addRemoveFunction(): void { + let removeButtons: NodeListOf = document.querySelectorAll(".removeButton"); + for (const iterator of removeButtons) + iterator.addEventListener("click", removeData); + } + +} + diff --git a/Aufgaben/Aufgabe_11_2020-07-08/form.html b/Aufgaben/Aufgabe_11_2020-07-08/form.html new file mode 100644 index 0000000..8111d1b --- /dev/null +++ b/Aufgaben/Aufgabe_11_2020-07-08/form.html @@ -0,0 +1,65 @@ + + + + + + + + Kapitel 11 + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+
+ + + + +
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/Aufgaben/Aufgabe_11_2020-07-08/mongo.js b/Aufgaben/Aufgabe_11_2020-07-08/mongo.js new file mode 100644 index 0000000..e5c95fe --- /dev/null +++ b/Aufgaben/Aufgabe_11_2020-07-08/mongo.js @@ -0,0 +1,61 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.handleMongo = void 0; +const Mongo = require("mongodb"); +var handleMongo; +(function (handleMongo) { + let content; + let dbUrl = ""; + function chooseUrl(_whichDB) { + if (_whichDB == "local") + dbUrl = "mongodb://127.0.0.1:27017/"; + if (_whichDB == "remote") + dbUrl = "mongodb+srv://AdminForUse:XV8MXEdBYuwXtQnc@ichstudieremitgis-jfrz9.mongodb.net/IchStudiereMitGiS?retryWrites=true&w=majority"; + } + async function connectDB(_whichDB) { + chooseUrl(_whichDB); + let options = { useNewUrlParser: true, useUnifiedTopology: true }; + let mongoClient = new Mongo.MongoClient(dbUrl, options); + await mongoClient.connect(); + //content = mongoClient.db("db").collection("Students"); + content = mongoClient.db("MeineHochschule").collection("Students"); + console.log("Database connection: ", content != undefined); + } + handleMongo.connectDB = connectDB; + function insertData(_order) { + content.insertOne(_order); + } + handleMongo.insertData = insertData; + async function removeData(_entry) { + //console.log("_entry: ", _entry); + //console.log(_entry._id); + let id = _entry._id; + let objID = new Mongo.ObjectID(id); + await content.deleteOne({ "_id": objID }); + } + handleMongo.removeData = removeData; + async function findCollection() { + let foundCollection = await content.find().toArray(); + return foundCollection; + } + handleMongo.findCollection = findCollection; + /* + async function findManyData(_order: Personalien): Promise { + let test: Mongo.Cursor = content.find(_order); + let testArray: Personalien[] = await test.toArray(); + console.log( testArray ); + return testArray.toString(); + } + + async function findOneData(_order: Personalien): Promise { + let test2: any = await content.findOne(_order); + console.log("findOneData: ", test2); + //console.log(test2.name); + } + + function removeData(_order: Personalien): void { + content.remove(_order); + } + */ +})(handleMongo = exports.handleMongo || (exports.handleMongo = {})); +//# sourceMappingURL=mongo.js.map \ No newline at end of file diff --git a/Aufgaben/Aufgabe_11_2020-07-08/mongo.js.map b/Aufgaben/Aufgabe_11_2020-07-08/mongo.js.map new file mode 100644 index 0000000..b7eba9a --- /dev/null +++ b/Aufgaben/Aufgabe_11_2020-07-08/mongo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mongo.js","sourceRoot":"","sources":["mongo.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC,IAAiB,WAAW,CA8D3B;AA9DD,WAAiB,WAAW;IAMxB,IAAI,OAAyB,CAAC;IAC9B,IAAI,KAAK,GAAW,EAAE,CAAC;IAEvB,SAAS,SAAS,CAAC,QAAgB;QAC/B,IAAI,QAAQ,IAAI,OAAO;YACnB,KAAK,GAAG,4BAA4B,CAAC;QACzC,IAAI,QAAQ,IAAI,QAAQ;YACpB,KAAK,GAAG,8HAA8H,CAAC;IAC/I,CAAC;IAEM,KAAK,UAAU,SAAS,CAAC,QAAgB;QAC5C,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpB,IAAI,OAAO,GAA6B,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;QAC5F,IAAI,WAAW,GAAsB,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;QAC5B,wDAAwD;QACxD,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;IAC/D,CAAC;IARqB,qBAAS,YAQ9B,CAAA;IAED,SAAgB,UAAU,CAAC,MAAmB;QAC1C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAFe,sBAAU,aAEzB,CAAA;IAEM,KAAK,UAAU,UAAU,CAAC,MAAmB;QAChD,kCAAkC;QAClC,0BAA0B;QAC1B,IAAI,EAAE,GAAmB,MAAM,CAAC,GAAG,CAAC;QACpC,IAAI,KAAK,GAAmB,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,OAAO,CAAC,SAAS,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;IAC5C,CAAC;IANqB,sBAAU,aAM/B,CAAA;IAEM,KAAK,UAAU,cAAc;QAChC,IAAI,eAAe,GAAkB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACpE,OAAO,eAAe,CAAC;IAC3B,CAAC;IAHqB,0BAAc,iBAGnC,CAAA;IAED;;;;;;;;;;;;;;;;;MAiBE;AAEN,CAAC,EA9DgB,WAAW,GAAX,mBAAW,KAAX,mBAAW,QA8D3B"} \ No newline at end of file diff --git a/Aufgaben/Aufgabe_11_2020-07-08/mongo.ts b/Aufgaben/Aufgabe_11_2020-07-08/mongo.ts new file mode 100644 index 0000000..0f4661c --- /dev/null +++ b/Aufgaben/Aufgabe_11_2020-07-08/mongo.ts @@ -0,0 +1,65 @@ +import * as Mongo from "mongodb"; + +export namespace handleMongo { + + export interface Personalien { + [type: string]: string | string[] | number | undefined; + } + + let content: Mongo.Collection; + let dbUrl: string = ""; + + function chooseUrl(_whichDB: string): void { + if (_whichDB == "local") + dbUrl = "mongodb://127.0.0.1:27017/"; + if (_whichDB == "remote") + dbUrl = "mongodb+srv://AdminForUse:XV8MXEdBYuwXtQnc@ichstudieremitgis-jfrz9.mongodb.net/IchStudiereMitGiS?retryWrites=true&w=majority"; + } + + export async function connectDB(_whichDB: string): Promise { // _url: string + chooseUrl(_whichDB); + let options: Mongo.MongoClientOptions = { useNewUrlParser: true, useUnifiedTopology: true }; + let mongoClient: Mongo.MongoClient = new Mongo.MongoClient(dbUrl, options); + await mongoClient.connect(); + //content = mongoClient.db("db").collection("Students"); + content = mongoClient.db("MeineHochschule").collection("Students"); + console.log("Database connection: ", content != undefined); + } + + export function insertData(_order: Personalien): void { + content.insertOne(_order); + } + + export async function removeData(_entry: Personalien): Promise { + //console.log("_entry: ", _entry); + //console.log(_entry._id); + let id: string = _entry._id; + let objID: Mongo.ObjectID = new Mongo.ObjectID(id); + await content.deleteOne({"_id": objID}); + } + + export async function findCollection(): Promise { + let foundCollection: Personalien[] = await content.find().toArray(); + return foundCollection; + } + + /* + async function findManyData(_order: Personalien): Promise { + let test: Mongo.Cursor = content.find(_order); + let testArray: Personalien[] = await test.toArray(); + console.log( testArray ); + return testArray.toString(); + } + + async function findOneData(_order: Personalien): Promise { + let test2: any = await content.findOne(_order); + console.log("findOneData: ", test2); + //console.log(test2.name); + } + + function removeData(_order: Personalien): void { + content.remove(_order); + } + */ + +} \ No newline at end of file diff --git a/Aufgaben/Aufgabe_11_2020-07-08/server.js b/Aufgaben/Aufgabe_11_2020-07-08/server.js new file mode 100644 index 0000000..b68f03b --- /dev/null +++ b/Aufgaben/Aufgabe_11_2020-07-08/server.js @@ -0,0 +1,55 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ServerSide = void 0; +const Http = require("http"); +const url = require("url"); +const mongo_1 = require("./mongo"); +//import {testThis } from "mongo.js"; +var ServerSide; +(function (ServerSide) { + console.log("Starting server"); + let port = Number(process.env.PORT); + if (!port) + port = 8100; + let server = Http.createServer(); + server.addListener("request", handleRequest); + server.addListener("listening", handleListen); + server.listen(port); + let myArgs = process.argv.slice(2); + let whichDB = myArgs[0]; + mongo_1.handleMongo.connectDB(whichDB); + function handleListen() { + console.log("Listening"); + } + async function handleRequest(_request, _response) { + console.log("https://theoneandgis.herokuapp.com" + `${_request.url}`); + let myData = url.parse(`${_request.url}`, true); + let myQuery = myData.query; + let myQueryString = JSON.stringify(myQuery); + //let splitString: string = (_request.url).slice(0, 9); + _response.setHeader("content-type", "application/json"); + _response.setHeader("Access-Control-Allow-Origin", "*"); + if (_request.url.includes("/mongo")) { + await mongoAction(_response, myQueryString, _request.url); + } + _response.end(); + } + async function mongoAction(_response, _query, _command) { + if (_command.includes("/send")) { + let myJsonObj = JSON.parse(_query); + mongo_1.handleMongo.insertData(myJsonObj); + _response.write(_query); + } + if (_command.includes("/retrieve")) { + let value = await mongo_1.handleMongo.findCollection(); + let handlThis = JSON.stringify(value); + _response.write(handlThis); + } + if (_command.includes("/remove")) { + let myJsonObj = JSON.parse(_query); + await mongo_1.handleMongo.removeData(myJsonObj); + _response.write(`{"":""}`); + } + } +})(ServerSide = exports.ServerSide || (exports.ServerSide = {})); +//# sourceMappingURL=server.js.map \ No newline at end of file diff --git a/Aufgaben/Aufgabe_11_2020-07-08/server.js.map b/Aufgaben/Aufgabe_11_2020-07-08/server.js.map new file mode 100644 index 0000000..31e2e84 --- /dev/null +++ b/Aufgaben/Aufgabe_11_2020-07-08/server.js.map @@ -0,0 +1 @@ +{"version":3,"file":"server.js","sourceRoot":"","sources":["server.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,2BAA2B;AAE3B,mCAAsC;AAEtC,qCAAqC;AAErC,IAAiB,UAAU,CA2D1B;AA3DD,WAAiB,UAAU;IAEvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,IAAI,IAAI,GAAW,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI;QACL,IAAI,GAAG,IAAI,CAAC;IAEhB,IAAI,MAAM,GAAgB,IAAI,CAAC,YAAY,EAAE,CAAC;IAC9C,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC7C,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEpB,IAAI,MAAM,GAAa,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,OAAO,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;IAChC,mBAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAG/B,SAAS,YAAY;QACjB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,UAAU,aAAa,CAAC,QAA8B,EAAE,SAA8B;QACvF,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QAEtE,IAAI,MAAM,GAA2B,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QACxE,IAAI,OAAO,GAAmB,MAAM,CAAC,KAAK,CAAC;QAC3C,IAAI,aAAa,GAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpD,+DAA+D;QAE/D,SAAS,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACxD,SAAS,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAExD,IAAc,QAAQ,CAAC,GAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAG;YAC7C,MAAM,WAAW,CAAE,SAAS,EAAE,aAAa,EAAY,QAAQ,CAAC,GAAI,CAAE,CAAC;SAC1E;QAED,SAAS,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,UAAU,WAAW,CAAC,SAA8B,EAAE,MAAc,EAAE,QAAgB;QACvF,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC5B,IAAI,SAAS,GAA4B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5D,mBAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAClC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC3B;QAED,IAAK,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAG;YAClC,IAAI,KAAK,GAA8B,MAAM,mBAAW,CAAC,cAAc,EAAE,CAAC;YAC1E,IAAI,SAAS,GAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9C,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SAC9B;QAED,IAAK,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAG;YAChC,IAAI,SAAS,GAA4B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5D,MAAM,mBAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACxC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SAC9B;IACL,CAAC;AAEL,CAAC,EA3DgB,UAAU,GAAV,kBAAU,KAAV,kBAAU,QA2D1B"} \ No newline at end of file diff --git a/Aufgaben/Aufgabe_11_2020-07-08/server.ts b/Aufgaben/Aufgabe_11_2020-07-08/server.ts new file mode 100644 index 0000000..1c87933 --- /dev/null +++ b/Aufgaben/Aufgabe_11_2020-07-08/server.ts @@ -0,0 +1,67 @@ +import * as Http from "http"; +import * as url from "url"; +import { ParsedUrlQuery } from "querystring"; +import { handleMongo } from "./mongo"; + +//import {testThis } from "mongo.js"; + +export namespace ServerSide { + + console.log("Starting server"); + let port: number = Number(process.env.PORT); + if (!port) + port = 8100; + + let server: Http.Server = Http.createServer(); + server.addListener("request", handleRequest); + server.addListener("listening", handleListen); + server.listen(port); + + let myArgs: string[] = process.argv.slice(2); + let whichDB: string = myArgs[0]; + handleMongo.connectDB(whichDB); + + + function handleListen(): void { + console.log("Listening"); + } + + async function handleRequest(_request: Http.IncomingMessage, _response: Http.ServerResponse): Promise { + console.log("https://theoneandgis.herokuapp.com" + `${_request.url}`); + + let myData: url.UrlWithParsedQuery = url.parse(`${_request.url}`, true); + let myQuery: ParsedUrlQuery = myData.query; + let myQueryString: string = JSON.stringify(myQuery); + //let splitString: string = (_request.url).slice(0, 9); + + _response.setHeader("content-type", "application/json"); + _response.setHeader("Access-Control-Allow-Origin", "*"); + + if ( (_request.url).includes("/mongo") ) { + await mongoAction( _response, myQueryString , (_request.url) ); + } + + _response.end(); + } + + async function mongoAction(_response: Http.ServerResponse, _query: string, _command: string): Promise { + if (_command.includes("/send")) { + let myJsonObj: handleMongo.Personalien = JSON.parse(_query); + handleMongo.insertData(myJsonObj); + _response.write(_query); + } + + if ( _command.includes("/retrieve") ) { + let value: handleMongo.Personalien[] = await handleMongo.findCollection(); + let handlThis: string = JSON.stringify(value); + _response.write(handlThis); + } + + if ( _command.includes("/remove") ) { + let myJsonObj: handleMongo.Personalien = JSON.parse(_query); + await handleMongo.removeData(myJsonObj); + _response.write(`{"":""}`); + } + } + +} diff --git a/Steckbrief/steckbrief.htm b/Steckbrief/steckbrief.htm index dcad850..230617a 100644 --- a/Steckbrief/steckbrief.htm +++ b/Steckbrief/steckbrief.htm @@ -18,7 +18,7 @@ body { Aufgabe 10
(2020-06-24) : Server Request Verarbeitung
Aufgabe 09 & - Server.ts
+ Server.ts
(2020-06-17) : Serveranbindung
Aufgabe 08
(2020-06-10) : JSON, Local Storage & Kommunikation
diff --git a/argv.js b/argv.js new file mode 100644 index 0000000..031abd3 --- /dev/null +++ b/argv.js @@ -0,0 +1 @@ +console.log(process.argv); \ No newline at end of file diff --git a/package.json b/package.json index 04674f2..c1b4a7d 100644 --- a/package.json +++ b/package.json @@ -4,11 +4,13 @@ "description": "Diese Datei soll mir helfen, mit Heruko arbeiten zu können.", "main": "index.js", "dependencies": { - "@types/node": "^14.0.13" + "@types/mongodb": "^3.5.25", + "@types/node": "^14.0.13", + "mongodb": "^3.5.9" }, "devDependencies": {}, "scripts": { - "start": "node Aufgaben/Aufgabe_09_2020-06-24/server.js" + "start": "node Aufgaben/Aufgabe_11_2020-07-08/server.js remote" }, "repository": { "type": "git",