Node.JS / Express:将两个端点连接在一起

时间:2016-10-28 18:04:11

标签: javascript node.js postgresql express sequelize.js

所以我正在研究node和Express中的一个项目,虽然我已经有了一些经验并且已经通过其他一些框架,我仍然试图找出最好的方法将其中两个连接在一起。

我使用POSTGRES设置模型和数据库来保存ID和连接表。

这是我到目前为止所做的:

获取用户

app.get('/api/users/:id', function(req, res) {
User.findOne({ where: { phone: req.params.id }}).then(function(user) {
  if (!user) {
    ////////   Create a user
    var newUser = User.build({ phone: req.params.id});
    newUser.save().then(function(user) {
      var json = userJson(user);
      res.json(json)
    }).catch(function(err) {
      res.json(err);
    });
  } else {
    //////// Existing user
    var json = userJson(user);
    json.events = []
    Event.findAll({ where: { user_id: user.id }}).then(function(events) {
      for( var i in events) {
        json.events.push({
          id: events[i].dataValues['id'],
          hosting: events[i].dataValues['hosting'],
          attending: attending[i].dataValues['attending'],
          invites: events[i].dataValues['invites']
        })
      }
      res.json(json)
    })
  }
})
});

获取活动

app.get('/api/events/:id', function(req, res) {
Event.findOne({ where: { id: req.params.id }}).then(function(event) {
  // console.log('-------------',event);
    var item = {
      id:             event.dataValues['id'],
      event_name:     event.dataValues['event_name'],
      event_at:       event.dataValues['event_at'],
      address:        event.dataValues['address'],
      description:    event.dataValues['description'],
      image:          event.dataValues['image'],
      categories: []
    }
      res.json(item);
  })
});

POST活动

app.post('/api/events', function(req, res) {
var newEvent = Event.build({
                             user_id:     req.body.user_id,
                             event_name:  req.body.event_name,
                             event_at:    req.body.event_at,
                             address:     req.body.address,
                             description: req.body.description,
                             image:       req.body.image
                                                                });


    newEvent.save().then(function(event) {
      res.redirect('/api/events/'+event.id);
    }).catch(function(err) {
      // console.log(err);
      return res.json({error: 'Error adding new event'});
    })

  });

型号:event_invite.js

var bcrypt = require('bcrypt-nodejs');

module.exports = function(sequelize, DataTypes) {
 return sequelize.define('event_hostings', {
  user_id           : DataTypes.INTEGER,
  event_id          : DataTypes.INTEGER
  }
 );
}

我知道有一种方法可以将两者连接在一起,但我正在尝试找出在USER创建EVENT时将两者互连的最佳方法,并且能够让它连接回用户并识别他们是创造者。

任何建议或指出我正确的方向将不胜感激!提前谢谢!

0 个答案:

没有答案