gpt4 book ai didi

javascript - sailsjs 其中多对多关系包含

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:56 26 4
gpt4 key购买 nike

我试图找到正在做某个主题的所有用户。关系如下:

User.js

attributes: {
subjects: { collection: 'subject', via: 'users', dominant: true }, // Many to Many
levels: { collection: 'level', via: 'users', dominant: true } // Many to Many
}

Subject.js

attributes: {
users : { collection: 'user', via: 'subjects' } // Many to Many
}

Level.js

attributes: {
users : { collection: 'user', via: 'levels' } // Many to Many
}

我希望能够查找用户并仅返回与特定主题有关系的用户。像这样的事情:

User.find({ subjects: { 'contains': 1 } })
.exec(function(err, results){
if(err) return res.serverError(err);
users = results;

return res.json(users);
});

我知道我可以通过以下方式做到这一点:

Subject.findOne({id:1})
.populate('users')
.exec(function(err, results){
if(err) return res.serverError(err);
users = results.users;

return res.json(users);
});

但是我不想这样做,因为我可能不仅仅想按主题进行过滤。例如,使用上述内容,我可能希望找到正在执行主题 1 并且正在执行级别 2 的所有用户。

User.find({ subjects: { 'contains': 1 }, levels: { 'contains': 2 } })
.exec(function(err, results){
if(err) return res.serverError(err);
users = results;

return res.json(users);
});

我使用的是 sails v0.12.3

最佳答案

据我所知,没有这样的机制,您可以像您提到的那样在哪里进行搜索。

尽管您可以通过以下方式做到这一点:

  1. 填充中使用条件

     User.find()
    .populate('subjects', {
    name: 'subject-1'
    })
    .populate('levels', {
    name: 'level-1'
    })
    .exec(function(err, user) {
    if (err) {
    // Error
    }
    sails.log.verbose(user);
    });
  2. 使用async

    async.auto({
    subject: function(cb) {
    Subject.findOne({
    name: 'subject-1'
    })
    .exec(cb);
    },
    level: function(cb) {
    Level.findOne({
    name: 'level-1'
    })
    .exec(cb);
    },
    user: ['subject', 'level', function(cb, results) {
    User.find({
    subjects: results.subject.id,
    levels: results.level.id
    })
    .exec(function(err, users) {
    if (err) {
    return cb(err);
    }
    sails.log.verbose(users); // Required user
    });
    }]
    }, function(err, results) {
    // Callback
    });
  3. 使用.query() method您必须编写 JOIN 查询来获取数据。

关于javascript - sailsjs 其中多对多关系包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38144466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com