Advertisement
Guest User

Untitled

a guest
Jan 17th, 2016
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.26 KB | None | 0 0
  1. > TypeError: db.collection.find is not a function <br> &nbsp; &nbsp;at
  2. > Object.module.exports.saveProductsignup
  3. > (/home/themis/firstapp/api/config/database.js:14:19) <br> &nbsp;
  4. > &nbsp;at /home/themis/firstapp/api/server.js:103:21 <br> &nbsp;
  5. > &nbsp;at Layer.handle [as handle_request]
  6. > (/home/themis/firstapp/api/node_modules/express/lib/router/layer.js:82:5)
  7. > <br> &nbsp; &nbsp;at next
  8. > (/home/themis/firstapp/api/node_modules/express/lib/router/route.js:100:13)
  9. > <br> &nbsp; &nbsp;at Route.dispatch
  10. > (/home/themis/firstapp/api/node_modules/express/lib/router/route.js:81:3)
  11. > <br> &nbsp; &nbsp;at Layer.handle [as handle_request]
  12. > (/home/themis/firstapp/api/node_modules/express/lib/router/layer.js:82:5)
  13. > <br> &nbsp; &nbsp;at
  14. > /home/themis/firstapp/api/node_modules/express/lib/router/index.js:234:24
  15. > <br> &nbsp; &nbsp;at Function.proto.process_params
  16. > (/home/themis/firstapp/api/node_modules/express/lib/router/index.js:312:12)
  17. > <br> &nbsp; &nbsp;at
  18. > /home/themis/firstapp/api/node_modules/express/lib/router/index.js:228:12
  19. > <br> &nbsp; &nbsp;at Function.match_layer
  20. > (/home/themis/firstapp/api/node_modules/express/lib/router/index.js:295:3)
  21. > <br> &nbsp; &nbsp;at next
  22. > (/home/themis/firstapp/api/node_modules/express/lib/router/index.js:189:10)
  23. > <br> &nbsp; &nbsp;at
  24. > /home/themis/firstapp/api/node_modules/express/lib/router/index.js:191:16
  25. > <br> &nbsp; &nbsp;at Function.match_layer
  26. > (/home/themis/firstapp/api/node_modules/express/lib/router/index.js:295:3)
  27. > <br> &nbsp; &nbsp;at next
  28. > (/home/themis/firstapp/api/node_modules/express/lib/router/index.js:189:10)
  29. > <br> &nbsp; &nbsp;at
  30. > /home/themis/firstapp/api/node_modules/express/lib/router/index.js:191:16
  31. > <br> &nbsp; &nbsp;at Function.match_layer
  32. > (/home/themis/firstapp/api/node_modules/express/lib/router/index.js:295:3)
  33.  
  34. var express = require('express'),
  35. MongoClient = require('mongodb').MongoClient,
  36. app = express(),
  37. mongoUrl= 'mongodb://localhost:27017/firstapp';
  38. var access = require('./config/database.js');
  39. var assert = require('assert');
  40. var ObjectId = require('mongodb').ObjectID;
  41. var bodyParser = require('body-parser');
  42. var morgan = require('morgan');
  43. var mongoose = require('mongoose');
  44. var passport = require('passport');
  45. var redisClient = require('redis').createClient;
  46. var redis = redisClient(6379, 'localhost');
  47. var config = require('./config/database'); // get db config file
  48. var User = require('./app/models/user'); // get the mongoose model
  49. var port = process.env.PORT || 8080;
  50. var jwt = require('jwt-simple');
  51. // get our request parameters
  52. app.use(bodyParser.urlencoded({ extended: false }));
  53. app.use(bodyParser.json());
  54. // log to console
  55. app.use(morgan('dev'));
  56.  
  57. // Use the passport package in our application
  58. app.use(passport.initialize());
  59.  
  60. // demo Route (GET http://localhost:8080)
  61. app.get('/', function(req, res) {
  62. res.send('The API is at http://localhost:' + port + '/api');
  63. });
  64. // connect to database
  65. mongoose.connect(config.database);
  66.  
  67. // pass passport for configuration
  68. require('./config/passport')(passport);
  69.  
  70. // bundle our routes
  71. var apiRoutes = express.Router();
  72.  
  73.  
  74. MongoClient.connect(mongoUrl, function(err, db) {
  75. if (err) throw 'Error connecting to database - ' + err;
  76.  
  77. // create a new user account (POST http://localhost:8080/api/signup)
  78. apiRoutes.post('/signup', function(req, res) {
  79. if (!req.body.name || !req.body.password || !req.body.email) {
  80. res.json({success: false, msg: 'Please pass name and password and email.'});
  81. } else {
  82. var newUser = new User({
  83. name: req.body.name,
  84. password: req.body.password,
  85. email: req.body.email
  86. });
  87. // save the user
  88. newUser.save(function(err) {
  89. if (err) {
  90. return res.json({success: false, msg: 'Username already exists.'});
  91. }
  92. res.json({success: true, msg: 'Successful created new user.'});
  93. });
  94. }
  95. });
  96.  
  97. //User authentication (POST http://localhost:8080/api/authenticate)
  98. apiRoutes.post('/authenticate', function(req, res) {
  99. User.findOne({
  100. name: req.body.name
  101. }, function(err, user) {
  102. if (err) throw err;
  103.  
  104. if (!user) {
  105. res.send({success: false, msg: 'Authentication failed. User not found.'});
  106. } else {
  107. // check if password matches
  108. user.comparePassword(req.body.password, function (err, isMatch) {
  109. if (isMatch && !err) {
  110. // if user is found and password is right create a token
  111. var token = jwt.encode(user, config.secret);
  112. // return the information including token as JSON
  113. res.json({success: true, token: 'JWT ' + token});
  114. } else {
  115. res.send({success: false, msg: 'Authentication failed. Wrong password.'});
  116. }
  117. });
  118. }
  119. });
  120. });
  121.  
  122. //create posts about product (POST http://localhost:8080/api/createpost)
  123. apiRoutes.post('/resources/createpost', function (req, res) {
  124. if (!req.body.issue || !req.body.SN) res.status(400).send("Please give an issue and a S/N for the product");
  125. else {
  126. access.savePost(db, req.body.issue, req.body.SN, function (err) {
  127. if (err) res.status(500).send("Server error");
  128. else res.status(201).send("Post Created");
  129. });
  130. }
  131. });
  132.  
  133. apiRoutes.post('/resources/productsignup', function (req, res) {
  134. if (!req.body.name || !req.body.serialnumber) res.status(400).send("Please give a name and a Serial number for the product");
  135. else {
  136. access.saveProductsignup(db, req.body.name, req.body.serialnumber, function (err) {
  137. if (err) res.status(500).send("Server error");
  138. else res.status(201).send("Post Created");
  139. });
  140. }
  141. });
  142.  
  143. //restricted log in (GET http://localhost:8080/api/memberinfo)
  144. apiRoutes.get('/memberinfo', passport.authenticate('jwt', { session: false}), function(req, res) {
  145. var token = getToken(req.headers);
  146. if (token) {
  147. var decoded = jwt.decode(token, config.secret);
  148. User.findOne({
  149. name: decoded.name
  150. }, function(err, user) {
  151. if (err) throw err;
  152.  
  153. if (!user) {
  154. return res.status(403).send({success: false, msg: 'Authentication failed. User not found.'});
  155. } else {
  156. res.json({success: true, msg: 'Welcome in the member area ' + user.name + '!'});
  157. }
  158. });
  159. } else {
  160. return res.status(403).send({success: false, msg: 'No token provided.'});
  161. }
  162. });
  163.  
  164. getToken = function (headers) {
  165. if (headers && headers.authorization) {
  166. var parted = headers.authorization.split(' ');
  167. if (parted.length === 2) {
  168. return parted[1];
  169. } else {
  170. return null;
  171. }
  172. } else {
  173. return null;
  174. }
  175. };
  176.  
  177.  
  178.  
  179. //demo Start
  180.  
  181. apiRoutes.delete('/resources/productinfo/:id', function(req, res, next) {
  182. Products.findByIdAndRemove(req.params.id, req.body, function(err, post){
  183. if (err) return next(err);
  184. res.json(post);
  185. });
  186. });
  187.  
  188.  
  189. apiRoutes.get('/productinfo' , function(req, res, next) {
  190. Products.find( function (err, result) {
  191. if (err) return console.error(err);
  192. res.json(result);
  193. });
  194. });
  195.  
  196. apiRoutes.get('/resources/productinfo/:name' , function(req, res) {
  197. if (!req.param('name')) res.status(400).send("Please send a proper name");
  198. else{
  199. access.findProductsByName(db, req.param('name'), function(info) {
  200. if (!products) res.status(500).send("server error");
  201. else res.status(200).send(info);
  202. });
  203. }
  204. });
  205.  
  206.  
  207. //demo End
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220. // connect the api routes under /api/*
  221. app.use('/api', apiRoutes);
  222. module.exports = apiRoutes;
  223.  
  224.  
  225.  
  226.  
  227. app.listen(8080, function() {
  228. console.log('listening on port 8080');
  229. });
  230. });
  231.  
  232. module.exports = {
  233. 'secret': 'di.ionio.gr',
  234. 'database': 'mongodb://localhost/firstapp'
  235. };
  236.  
  237. module.exports.savePost = function (db, issue, SN, callback) {
  238. db.collection('posts').save({
  239. issue: issue,
  240. SN: SN
  241. }, callback);
  242. };
  243.  
  244. module.exports.saveProductsignup = function (db, name, serialnumber, callback) {
  245. db.collection.find({ "serialnumber" : { $exists : true, $ne : null } })
  246. db.collection('products').save({
  247. name: name,
  248. serialnumber: serialnumber
  249. }, callback);
  250. };
  251.  
  252.  
  253. module.exports.findProductsByName = function (model, name, callback) {
  254. model.findOne({
  255. name: name
  256. }, function (err, doc) {
  257. if (err || !doc) callback(null);
  258. else callback(doc.products);
  259. });
  260. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement