2016-11-26 3 views
0

Я пытаюсь sails.js ассоциации использованием один способ ссылки (по sails.js в действие книги). Теперь значение владельца успешно вставлено в владелец столбец, но значение в автомобилей столбец не вставлен.Почему в столбце не добавляется значение .add()?

Когда я попытался console.log(foundDriver) и console.dir(foundDriver), он показал следующие вещи:

{ID: 1, имя: 'ASDF'}

{автомобили: [Getter/сеттер], идентификатор: 1 , Название: 'ASDF'}

Мои столы (1: водитель, 2: автомобиль):

enter image description here enter image description here

КОД:

Car.js

module.exports = { 
    connection: 'mysqlAdapter', 
    tableName: 'car', 
    attributes: { 
    id: { 
     type: 'integer', 
     primaryKey: true 
    }, 
    Name: { 
     type: 'string' 
    }, 
    Brand: { 
     type: 'string' 
    }, 
    Model: { 
     type: 'string' 
    }, 
    owner: { 
     model: 'driver' 
    } 
    } 
}; 

Driver.js

module.exports = { 
connection: 'mysqlAdapter', 
tableName: 'driver', 
attributes: { 
    id: { 
    type: 'integer', 
    primaryKey: true 
    }, 
    Name: { 
    type: 'string' 
    }, 
    cars: { 
    collection: 'car' 
    } 
} 
}; 

CarController.js

module.exports = { 
    createCars: function (req, res) { 
     Driver.findOne({ 
      id: 1 
     }).exec(function (err, foundDriver) { 
      if (err) { 
       console.log("Err1" + foundDriver); 
      } 
      if (!foundDriver) { 
       console.log("Err2"); 
      } 
      Car.create({ 
       Name: "car1", 
       Brand: "brnd", 
       Model: "mdl", 
       owner: foundDriver.id 
      }).exec(function (err, createdCar) { 
       if (err) { 
        console.log("Err3"); 
       } 
       foundDriver.cars.add(createdCar.id); 
            foundDriver.save(function (err) { 
              if (err) { 
         console.log(foundDriver); 

         } 
          return res.json({id: 100}); 
        }); 
      }); 
     }); 
    } 
    }; 

ответ

1

Он не будет вставлен, потому что его «виртуальные» данные. Когда вы захотите получить эти данные, вам необходимо присоединиться к этим двум таблицам.

Driver.find({ 

}).populate('cars').exec(function(error, drivers){ 

}); 

запрос отправлен в базу данных будет выглядеть как этот

select * from driver inner join car where driver.id = car.owner 
+0

Тогда какова цель .Add() и функции .save()? Они не хотят вставлять данные на самом деле? Но хранить практически? Правильно ли я понял? –

+0

Вот как работает ассоциация. Во многих местах вы не одинаковые данные. – Bonanza

+0

Они не * одинаковые данные? –

Смежные вопросы