index.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. var url = require('url');
  2. var mongoose = require('mongoose');
  3. var mongodbUrl = 'mongodb://' + process.env.MONGODB_USERNAME + ':' + process.env.MONGODB_PASSWORD + '@' + process.env.MONGODB_PORT_27017_TCP_ADDR + ':' + process.env.MONGODB_PORT_27017_TCP_PORT + '/' + process.env.MONGODB_INSTANCE_NAME;
  4. var express = require('express');
  5. var app = express();
  6. var danmakuSchema = new mongoose.Schema({
  7. player: String,
  8. author: String,
  9. time: Number,
  10. text: String,
  11. color: String,
  12. type: String
  13. });
  14. var danmaku = mongoose.model('dan', danmakuSchema);
  15. app.all('*', function(req, res, next) {
  16. res.header('Access-Control-Allow-Origin', '*');
  17. res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
  18. res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
  19. if (req.method == 'OPTIONS') {
  20. res.send(200);
  21. }
  22. else {
  23. next();
  24. }
  25. });
  26. app.get('/', function(req, res) {
  27. mongoose.connect(mongodbUrl);
  28. var db = mongoose.connection;
  29. db.on('error',console.error);
  30. var id = url.parse(req.url,true).query.id;
  31. db.once('open', function() {
  32. danmaku.find({player: id}, function (err, data) {
  33. if (err) {
  34. console.error(err);
  35. }
  36. var json = `{"code": 1,"danmaku":[`;
  37. for (var i = 0; i < data.length; i++) {
  38. json += JSON.stringify(data[i]);
  39. if (i !== data.length - 1) {
  40. json += `,`;
  41. }
  42. }
  43. json += `]}`;
  44. res.write(json);
  45. res.end();
  46. db.close();
  47. })
  48. });
  49. });
  50. app.post('/', function (req, res) {
  51. var body = '', jsonStr;
  52. req.on('data', function (chunk) {
  53. body += chunk;
  54. });
  55. req.on('end', function () {
  56. try {
  57. jsonStr = JSON.parse(body);
  58. } catch (err) {
  59. jsonStr = null;
  60. }
  61. var dan = new danmaku({player: jsonStr.player, author: jsonStr.author, time: jsonStr.time, text: jsonStr.text, color: jsonStr.color, type: jsonStr.type});
  62. dan.save(function (err, d) {
  63. if (err){
  64. console.error(err);
  65. }
  66. });
  67. });
  68. });
  69. app.listen(1207);