节点JS& MongoDB - 发布和获取iOS服务器api

时间:2017-10-19 15:18:47

标签: javascript ios node.js mongodb

我正在为我正在努力的应用程序做一个非常基本的服务器,以帮助我理解节点js和mongodb作为我的移动应用程序的服务器。我已经按照教程进行了简单的待办事项。但我接下来要做的是将图像与POST请求中的文本一起发布,并使用GET请求将其作为JSON检索。下面是我到目前为止已成功将todo名称和日期创建的代码发布到数据库的代码。

下面的类是我对Schema的内容,但我试图添加我认为图像将被添加的方式,但我不认为这是正确的。我相信正确的做法是将图像存储在文件系统中,例如https://{mydomain}/images/,然后在发布图像数据时,将图像存储在文件夹中,将URL存储到数据库中的图像中?

todoListModel.js

'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;


var TaskSchema = new Schema({
  name: {
    type: String,
    required: 'Kindly enter the name of the task'
  },
  img: {
    data: Buffer,
    contentType: String
  },
  Created_date: {
    type: Date,
    default: Date.now
  }
});

module.exports = mongoose.model('Tasks', TaskSchema);

todoListController.js

'use strict';


var mongoose = require('mongoose'),
  Task = mongoose.model('Tasks');

exports.list_all_tasks = function(req, res) {
  Task.find({}, function(err, task) {
    if (err)
      res.send(err);
    res.json({
      data: {
        task
      }
    });
  });
};




exports.create_a_task = function(req, res) {
  var new_task = new Task(req.body);
  new_task.save(function(err, task) {
    if (err)
      res.send(err);
    res.json({
      data: {
        task
      }
    });
  });
};


exports.read_a_task = function(req, res) {
  Task.findById(req.params.taskId, function(err, task) {
    if (err)
      res.send(err);
    res.json({
      data: {
        task
      }
    });
  });
};


exports.update_a_task = function(req, res) {
  Task.findOneAndUpdate({_id: req.params.taskId}, req.body, {new: true}, function(err, task) {
    if (err)
      res.send(err);
    res.json({
      data: {
        task
      }
    });
  });
};


exports.delete_a_task = function(req, res) {


  Task.remove({
    _id: req.params.taskId
  }, function(err, task) {
    if (err)
      res.send(err);
    res.json({ message: 'Task successfully deleted' });
  });
};

todoListRoutes.js

'use strict';
module.exports = function(app) {
  var todoList = require('../controllers/todoListController');

  // todoList Routes
  app.route('/tasks')
    .get(todoList.list_all_tasks)
    .post(todoList.create_a_task);


  app.route('/tasks/:taskId')
    .get(todoList.read_a_task)
    .put(todoList.update_a_task)
    .delete(todoList.delete_a_task);
};

server.js

var express = require('express'),
  app = express(),
  port = process.env.PORT || 3000,
  mongoose = require('mongoose'),
  Task = require('./api/models/todoListModel'), //created model loading here
  bodyParser = require('body-parser');

// mongoose instance connection url connection
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost/Tododb');


app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());


var routes = require('./api/routes/todoListRoutes'); //importing route
routes(app); //register the route


app.listen(port);


console.log('todo list RESTful API server started on: ' + port);

如果有人能够对此有所了解,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为这是首先将图像上传到项目文件夹的最佳方法,或者如果您使用的话,可以在AWS S3存储桶中上传图像,然后将该图像的路径存储到您的集合中。 正确的架构将是

var myData = xml2json(responseBody);
console.log(responseBody);
var body = JSON.parse(myData);
tests["Response Count is:  " + myData.markers && myData.markers.length] = true;