Bookshelf、Knex 和 mysql 保存一个对象的列表

Bookshelf, Knex and mysql to save a list of an object

在这种情况下使用Bookshelf模型向数据库插入数据我很困惑:

我正在使用这些库: knex、书架、express、body-parser 和 mysql 数据库

我在数据库上有一个 table 称为位置,它包含以下列: loc_idlatitudelongitudetime

这个位置是从一个用户发送的,所以我需要用 user_id

loc_id 保存在另一个 table 中

保存位置(单个对象)而不保存 user_id 我使用此代码:

.post(function (req, res) {

    Loc.forge({latitude: req.body.location.lat,
                  longitude: req.body.location.lng,
                  date:req.body.time,
                  speed:req.body.speed,
                  gpsAnten:req.body.gpsAnten})
    .save()
    .then(function (location) {
      res.json({error: false, data: {id: location.get('id')}});
    })
    .catch(function (err) {
      res.status(500).json({error: true, data: {message: err.message}});
    });
  });

但是现在,我正在从我的设备发送 post 正文请求:(它是 JSON 格式)

{
  "user_id": 135,
  "locations": [
    {
      "id": 1,
      "latitude": "35.374760",
      "longitude": "51.5123916",
      "date": "0000-00-00 00:00:00"
    },
    {
      "id": 2,
      "latitude": "35.6247466",
      "longitude": "51.51241",
      "date": "0000-00-00 00:00:00"
    },
    {
      "id": 3,
      "latitude": "35.6247466",
      "longitude": "51.51241",
      "date": "0000-00-00 00:00:00"
    },
    {
      "id": 4,
      "latitude": "35.6247466",
      "longitude": "51.51241",
      "date": "0000-00-00 00:00:00"
    },
    {
      "id": 5,
      "latitude": "35.6247466",
      "longitude": "51.51241",
      "date": "0000-00-00 00:00:00"
    },
    {
      "id": 6,
      "latitude": "35.6247466",
      "longitude": "51.51241",
      "date": "0000-00-00 00:00:00"
      }
  ]
}

如何在location table 中保存每个位置并获取此 Id,然后将其 loc_iduser_id 保存在 loc_user table ?

至少我找到了解决这个问题的方法;这是我的代码:

  .post(function (req, res) {

deviceId = req.body.id

locationArray = req.body.frame;
locationArray.forEach(function(element) {
console.log(element);
Loc.forge({latitude: element.location.lat,
              longitude: element.location.lng,
              date: element.time,
              speed: element.speed,
              gpsAnten: element.gpsAnten})
.save()
.then(function (location) {
 userDevice.forge({
   device_id: deviceId,
   location_id: location.get('id')
 })
 .save()
 .then(function(middleware) {
   console.log('Save middleware');
 })
 .catch(function(err) {
   console.log('Error middleware:' + err.message);
 })
})
.catch(function (err) {
  console.log('Error location:' + err.message);
});
   });
  });

它不像我需要的那么清楚,但似乎是唯一的解决方案。