Skip to content

Commit 32be462

Browse files
committed
Initial push of files to repo from local machine
1 parent 43a1d61 commit 32be462

17 files changed

+1660
-0
lines changed

dal.js

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
const MongoClient = require('mongodb').MongoClient;
2+
const url = 'mongodb://localhost:27017';
3+
let db = null;
4+
5+
// connect to mongo
6+
MongoClient.connect(url, { useUnifiedTopology: true }, function (err, client) {
7+
console.log("Connected successfully to db server");
8+
9+
// connect to myproject database
10+
db = client.db('myproject');
11+
});
12+
13+
// create user account using the collection.insertOne function
14+
function create(name, email, password) {
15+
return new Promise((resolve, reject) => {
16+
const collection = db.collection('users');
17+
const doc = { name, email, password, balance: 0 };
18+
collection.insertOne(doc, {w:1}, function(err, result) {
19+
err ? reject(err) : resolve(doc);
20+
});
21+
})
22+
}
23+
24+
// find user account
25+
function find(email) {
26+
return new Promise((resolve, reject) => {
27+
const customers = db
28+
.collection('users')
29+
.find({ email: email })
30+
.toArray(function (err, docs) {
31+
err ? reject(err) : resolve(docs);
32+
});
33+
})
34+
}
35+
36+
// find user account
37+
function findOne(email) {
38+
return new Promise((resolve, reject) => {
39+
const customers = db
40+
.collection('users')
41+
.findOne({ email: email })
42+
.then((doc) => resolve(doc))
43+
.catch((err) => reject(err));
44+
})
45+
}
46+
47+
// update - deposit/withdraw amount
48+
function update(email, amount) {
49+
return new Promise((resolve, reject) => {
50+
const customers = db
51+
.collection('users')
52+
.findOneAndUpdate(
53+
{ email: email },
54+
{ $inc: { balance: amount } },
55+
{ returnOriginal: false },
56+
function (err, documents) {
57+
err ? reject(err) : resolve(documents);
58+
}
59+
);
60+
61+
62+
});
63+
}
64+
65+
// return all users by using the collection.find method
66+
function all(){
67+
return new Promise((resolve, reject) => {
68+
const customers = db
69+
.collection('users')
70+
.find({})
71+
.toArray(function(err, docs) {
72+
err ? reject(err) : resolve(docs);
73+
});
74+
})
75+
}
76+
77+
78+
module.exports = { create, findOne, find, update, all };

index.js

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
var express = require('express');
2+
var app = express();
3+
var cors = require('cors');
4+
var dal = require('./dal.js');
5+
const e = require('express');
6+
7+
// used to serve static files from public directory
8+
app.use(express.static('public'));
9+
app.use(cors());
10+
11+
// create user account
12+
app.get('/account/create/:name/:email/:password', function (req, res) {
13+
14+
// check if account exists
15+
dal.find(req.params.email).
16+
then((users) => {
17+
18+
// if user exists, return error message
19+
if(users.length > 0){
20+
console.log('User already in exists');
21+
res.send('User already in exists');
22+
}
23+
else{
24+
// else create user
25+
dal.create(req.params.name,req.params.email,req.params.password).
26+
then((user) => {
27+
console.log(user);
28+
res.send(user);
29+
});
30+
}
31+
32+
});
33+
});
34+
35+
36+
// login user
37+
app.get('/account/login/:email/:password', function (req, res) {
38+
39+
dal.find(req.params.email).
40+
then((user) => {
41+
42+
// if user exists, check password
43+
if(user.length > 0){
44+
if (user[0].password === req.params.password){
45+
res.send(user[0]);
46+
}
47+
else{
48+
res.send('Login failed: wrong password');
49+
}
50+
}
51+
else{
52+
res.send('Login failed: user not found');
53+
}
54+
});
55+
56+
});
57+
58+
// find user account
59+
app.get('/account/find/:email', function (req, res) {
60+
61+
dal.find(req.params.email).
62+
then((user) => {
63+
console.log(user);
64+
res.send(user);
65+
});
66+
});
67+
68+
// find one user by email - alternative to find
69+
app.get('/account/findOne/:email', function (req, res) {
70+
71+
dal.findOne(req.params.email).
72+
then((user) => {
73+
console.log(user);
74+
res.send(user);
75+
});
76+
});
77+
78+
79+
// update - deposit/withdraw amount
80+
app.get('/account/update/:email/:amount', function (req, res) {
81+
82+
var amount = Number(req.params.amount);
83+
84+
dal.update(req.params.email, amount).
85+
then((response) => {
86+
console.log(response);
87+
res.send(response);
88+
});
89+
});
90+
91+
// all accounts
92+
app.get('/account/all', function (req, res) {
93+
94+
dal.all().
95+
then((docs) => {
96+
console.log(docs);
97+
res.send(docs);
98+
});
99+
});
100+
101+
var port = 3000;
102+
app.listen(port);
103+
console.log('Running on port: ' + port);

mongo_test.js

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
const MongoClient = require('mongodb').MongoClient;
2+
const url = 'mongodb://localhost:27017';
3+
4+
// connect to mongo
5+
MongoClient.connect(url, {useUnifiedTopology: true}, function(err, client) {
6+
console.log("Connected successfully to server");
7+
8+
// database Name
9+
const dbName = 'myproject';
10+
const db = client.db(dbName);
11+
12+
// new user
13+
var name = 'user' + Math.floor(Math.random()*10000);
14+
var email = name + '@mit.edu';
15+
16+
// insert into customer table
17+
var collection = db.collection('customers');
18+
var doc = {name, email};
19+
collection.insertOne(doc, {w:1}, function(err, result) {
20+
console.log('Document insert');
21+
});
22+
23+
var customers = db
24+
.collection('customers')
25+
.find()
26+
.toArray(function(err, docs) {
27+
console.log('Collection:',docs);
28+
29+
// clean up
30+
client.close();
31+
});
32+
33+
});

0 commit comments

Comments
 (0)