2013-12-03 4 views
1

Я очень новичок в базе данных Sails и noSQL, и мне сложно собирать информацию из разных коллекций. В основном мне нужно собрать объект предметов из одной коллекции, а затем использовать внешний ключ, хранящийся в этой коллекции, для добавления данных из отдельной коллекции, чтобы все это можно было отправить как один объект.Создайте объект из нескольких коллекций баз данных (SailsJS, MongoDB, WaterlineJS)

В настоящее время я нахожу все предметы в коллекции под названием «Художественные работы», затем я использую цикл for для итерации произведений. Мне нужно использовать идентификатор, хранящийся в Artworks, для запроса коллекции под названием «Контакты», но, успешно обнаружив контакт, я не могу передать его обратно из функции, чтобы добавить его в объект «Художественное произведение».

find: function (req, res, next) { 
      Artwork.find().done(function (err, artwork) { 
       // Error handling 
       if (err) { 
        return console.log(err); 
       } else { 
        for (x in artwork) { 
         var y = artwork[x]['artistID']; 
         // Get the artsists name 
         Contact.find(y).done(function(err, contact) { 
          // Error handling 
          if (err) { 
           return console.log(err); 
          // The Artist was found successfully! 
          } else { 
           var artist = contact[0]['fullName']; 
          } 
         }); 
         artwork[x]['artistsName'] = artist; 
        } 
        res.send(artwork); 
       } 
      }); 
} 

Результат вышеуказанного кода - это ошибка, которая говорит мне, что «художник» не определен. Переменная не передается вне функции?

Любые советы очень получены.

ответ

1

Паруса собирается выпустить обновление, которое будет включать в себя ассоциации. В то же время, вот ответ на то, как вы можете это сделать, используя async. https://stackoverflow.com/a/20050821/1262998

+0

Большое спасибо @JohnGalt. Я с нетерпением жду обновления: [(github.com/balderdashy/sails/issues/124)](https://github.com/balderdashy/sails/issues/124). В то же время у меня будет вариант async. – user3024839

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