Upload Aufgabe 11

This commit is contained in:
Justin Dretvic 2020-07-08 13:18:23 +02:00
parent 888e67834c
commit 418434fcfc
13 changed files with 475 additions and 3 deletions

View File

@ -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 += `<button class="removeButton" thisEntry=${(JSON.stringify(_jsonResponse[index]._id))}> Delete Entry </button><br>`;
let current = _jsonResponse[index];
for (let key in current) {
jsonString += key + ": " + JSON.stringify(current[key]) + "<br>";
}
jsonString += "<br>";
}
}
return jsonString;
}
function addRemoveFunction() {
let removeButtons = document.querySelectorAll(".removeButton");
for (const iterator of removeButtons)
iterator.addEventListener("click", removeData);
}
})(clientSide || (clientSide = {}));
//# sourceMappingURL=client.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"client.js","sourceRoot":"","sources":["client.ts"],"names":[],"mappings":"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"}

View File

@ -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;
}
(<HTMLButtonElement>document.querySelector("#abschicken")).addEventListener("click", sendData);
function sendData(): void {
communicate("https://theoneandgis.herokuapp.com", "mongo", "send", "");
}
(<HTMLButtonElement>document.querySelector("#abfragen")).addEventListener("click", retrieveData);
function retrieveData(): void {
communicate("https://theoneandgis.herokuapp.com", "mongo", "retrieve", "");
}
function removeData(_event: Event): void {
let target: HTMLElement = (<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<void> {
let formData: FormData = new FormData(document.forms[0]);
let url: string = "";
if (_id == "") {
//tslint:disable-next-line: no-any
let query: URLSearchParams = new URLSearchParams(<any>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);
(<HTMLDivElement>document.querySelector("#divResponse")).innerHTML = jsonString;
//console.log(jsonResponse[0].vorname + " " + jsonResponse[0].nachname + " " + jsonResponse[0].geburtsjahr);
}
if (_task == "retrieve") {
let jsonString: string = formatCollection(jsonResponse);
(<HTMLDivElement>document.querySelector("#divDatabase")).innerHTML = jsonString;
addRemoveFunction();
}
(<HTMLFormElement>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 += `<button class="removeButton" thisEntry=${(JSON.stringify(_jsonResponse[index]._id))}> Delete Entry </button><br>`;
let current: Personalien = <Personalien>_jsonResponse[index];
for (let key in current) {
jsonString += key + ": " + JSON.stringify(current[key]) + "<br>";
}
jsonString += "<br>";
}
}
return jsonString;
}
function addRemoveFunction(): void {
let removeButtons: NodeListOf<HTMLButtonElement> = document.querySelectorAll(".removeButton");
for (const iterator of removeButtons)
iterator.addEventListener("click", removeData);
}
}

View File

@ -0,0 +1,65 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="client.js" defer></script>
<title>Kapitel 11</title>
</head>
<body>
<button class="container">Becher</button>
<button id="blueberry">Blau</button>
<button id="raspberry">Rot</button>
<button id="streusel">bunte Streusel</button>
<hr>
<form id="myForm" method="" action="">
<!--https://theoneandgis.herokuapp.com-->
<label for="vorname" method="get">
Vorname
</label><br>
<input type="text" id="vorname" name="vorname" value="Vorname" onfocus="this.value=''"><br>
<label for="nachname">
Nachname
</label><br>
<input type="text" id="nachname" name="nachname" value="Nachname" onfocus="this.value=''"><br>
<label for="geburtsjahr">
Geburtsjahr
</label><br>
<input type="text" id="geburtsjahr" name="geburtsjahr" value="2000"><br>
<button type="button" id="abschicken"> Eintrag </button>
<button type="button" id="abfragen"> Abfrage </button>
</form>
<hr>
<div id="divResponse"></div>
<hr>
<div id="divDatabase"></div>
</body>
</html>
<style>
button,
label,
input,
div {
margin: 10px;
}
body{
background-color: black;
color: white;
}
</style>

View File

@ -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<string> {
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<void> {
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

View File

@ -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"}

View File

@ -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<void> { // _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<void> {
//console.log("_entry: ", _entry);
//console.log(_entry._id);
let id: string = <string>_entry._id;
let objID: Mongo.ObjectID = new Mongo.ObjectID(id);
await content.deleteOne({"_id": objID});
}
export async function findCollection(): Promise<Personalien[]> {
let foundCollection: Personalien[] = await content.find().toArray();
return foundCollection;
}
/*
async function findManyData(_order: Personalien): Promise<string> {
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<void> {
let test2: any = await content.findOne(_order);
console.log("findOneData: ", test2);
//console.log(test2.name);
}
function removeData(_order: Personalien): void {
content.remove(_order);
}
*/
}

View File

@ -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 = (<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

View File

@ -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"}

View File

@ -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<void> {
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 = (<string>_request.url).slice(0, 9);
_response.setHeader("content-type", "application/json");
_response.setHeader("Access-Control-Allow-Origin", "*");
if ( (<string>_request.url).includes("/mongo") ) {
await mongoAction( _response, myQueryString , (<string>_request.url) );
}
_response.end();
}
async function mongoAction(_response: Http.ServerResponse, _query: string, _command: string): Promise<void> {
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(`{"":""}`);
}
}
}

View File

@ -18,7 +18,7 @@ body {
<a href="https://mongodbnetbrowser.herokuapp.com/?u=AdminForUse&p=XV8MXEdBYuwXtQnc&a=ichstudieremitgis-jfrz9.mongodb.net&n=MeineHochschule&c=Students" target="_blank"> Aufgabe 10 </a><br>
(2020-06-24) : Server Request Verarbeitung <br>
<a href="https://yamidesu.github.io/GIS-SoSe-2020/Aufgaben/Aufgabe_09_2020-06-24/form.html" target="_blank"> Aufgabe 09 </a> &
<a href="https://github.com/YamiDesu/GIS-SoSe-2020/blob/master/Aufgaben/Aufgabe_08_2020-06-17/test.ts" target="_blank"> Server.ts </a><br>
<a href="https://github.com/YamiDesu/GIS-SoSe-2020/blob/master/Aufgaben/Aufgabe_09_2020-06-24/server.ts" target="_blank"> Server.ts </a><br>
(2020-06-17) : Serveranbindung <br>
<a href="https://yamidesu.github.io/GIS-SoSe-2020/Aufgaben/Aufgabe_08_2020-06-17/tutorial.html" target="_blank"> Aufgabe 08 </a><br>
(2020-06-10) : JSON, Local Storage & Kommunikation <br>

1
argv.js Normal file
View File

@ -0,0 +1 @@
console.log(process.argv);

View File

@ -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",