Sails.js Sails JS复杂多对多关联

Sails.js Sails JS复杂多对多关联,sails.js,Sails.js,假设我有三个模型文件:作者、文章和出版物 我的model.js如下 //author.js attributes : { name : 'string', articles : { collection : 'article', via : 'authors' } } //article.js attributes : { name : 'string', authors : { collection : 'author', via : 'articles' },

假设我有三个模型文件:作者、文章和出版物

我的model.js如下

//author.js
attributes : {
 name : 'string',
 articles : {
  collection : 'article',
  via : 'authors'
 }
}

//article.js
attributes : {
 name : 'string',
 authors : {
  collection : 'author',
  via : 'articles'
 },
 publication : {
  model : 'publication'
 }
}

//publication.js
attributes : {
 name : 'string',
 articles : {
  collection : 'article',
  via : 'publication'
 }
}
从上面的关联中,如果我通过他的ID获得作者,它将返回作者详细信息,然后返回他所写的文章,我还希望这些文章必须显示它与发布模型的关联。我无法得到任何建议

我尝试了sails文档,但在那里我只能找到一层关联

我正在使用mongodb作为我的数据库


提前感谢

很抱歉,但是现在没有办法在单个数据库查询中完成此操作。您可以在两个或多个数据库查询中执行此操作。例子是这样的

Author
.findOne(2)
.populate('articles')
.exec(function (err, itemPost){
    // some error handling
    async.map(itemPost.articles,
        function (article, callback){
            Article
            .findOne(article.id)
            .populateAll()
            .exec(function (errArticles, articleItem){
                if(errArticles){return callback(errArticles)};
                callback(null, articleItem);
            });
        },
        function (errFromIterator, results){
            if(errFromIterator){res.serverError()};

            var itemPostToJSON = itemPost.toJSON();

            itemPostToJSON.comments = results;

            var clone = _.clone(itemPostToJSON);

            res.send(clone);
        }
    )
});
看起来人们已经讨论了很多这个问题。我给你一个他们的讨论。我的解决方案也是从这里开始的。希望能有帮助


[N.B:我没有运行此代码。所以不能说他们的代码是否错误。看起来没问题,所以我将其提交给了您。]

谢谢您的链接,从您上面的代码中,我可以得到完整的文章详细信息,这些信息以文章数组的形式返回,其中还有一个作者集合,但是我使用Dinanas代码实现了我的要求,该链接非常有用,再次感谢