Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sequelize未对子列表查询排序_Javascript_Orm_Sequelize.js - Fatal编程技术网

Javascript Sequelize未对子列表查询排序

Javascript Sequelize未对子列表查询排序,javascript,orm,sequelize.js,Javascript,Orm,Sequelize.js,我从一个具有多对多关系的嵌套模型中检索数据,该模型按中间表中的字段排序 有三种模型:项目、项目图像和标记。 Projects有自己的order字段,并且与另一个模型projectmages有一对多关系投影图像具有多对多关系,带有标记。 projectmages和Tags之间的中间表是projectmagestags,它有一个order字段来对显示的标记进行排序 非常简单。sequelize中的模型如下所示: const Projects = sequelize.define('Projects

我从一个具有多对多关系的嵌套模型中检索数据,该模型按中间表中的字段排序

有三种模型:
项目
项目图像
标记
Projects
有自己的
order
字段,并且与另一个模型
projectmages
有一对多关系<代码>投影图像具有多对多关系,带有
标记
projectmages
Tags
之间的中间表是
projectmagestags
,它有一个
order
字段来对显示的标记进行排序

非常简单。sequelize中的模型如下所示:

const Projects = sequelize.define('Projects',
    {
        order: {
            type: DataTypes.INTEGER,
        },
        title: { type: DataTypes.STRING },
);
Projects.associate = function(models) {
    Projects.hasMany(models.ProjectImages);
};
const ProjectImages = sequelize.define('ProjectImages', {
        title: { type: DataTypes.STRING },
});
ProjectImages.associate = (models) => {
    ProjectImages.belongsToMany(models.Tags, {
        through: models.ProjectImagesTags,
    });
};
const Tags = sequelize.define('Tags',
    {
        name: { type: DataTypes.STRING },
    },
);
Tags.associate = function(models) {
    Tags.belongsToMany(models.ProjectImages, {
        through: models.ProjectImagesTags,
    });
};
const ProjectImagesTags = sequelize.define('ProjectImagesTags',
    {
        order: {
            type: DataTypes.INTEGER,
        },
    },
);
现在,如果我从
projectmages
查询数据,我可以通过
projectmagestags
中间表中的
order
字段进行排序

models.ProjectImages.findOne({
    where: { id: 1 },
    include: [
        {
            model: models.Tags,
        },
    ],
    order: [
        ['order', 'ASC'], 
        [models.Tags, models.ProjectImagesTags, 'order', 'ASC']
    ],
})
但是如果我像以前一样从
项目
中查询,包括
项目图像
,并尝试从那里使用
[models.Tags,models.projectmagestags,'order','ASC']
进行订购,它将无法工作

models.Projects.findOne({
    where: { id: 1 },
    include: [
        {
            model: models.ProjectImages,
            include: [
                {
                    model: models.Tags,
                },
            ],
            order: [[models.Tags, models.ProjectImagesTags, 'order', 'ASC']]
        },
        {
            model: models.Tags,
        },
    ],
    order: [
        ['order', 'ASC'], 
        [models.ProjectImages, 'order', 'asc']
    ],
})
findAll
findById
的行为相同


我尝试了包括文字在内的所有可能的组合,但结果不是很清楚。如果有人知道如何进行此查询,我将不胜感激

order属性仅在顶层有效(子查询上的任何排序都将丢失)


嗯,我明白了……所以我必须在一级申报订单;在订单声明中,我必须引用第一个嵌套模型和第二个嵌套模型,以及中间表。它起作用了。
order: [
    ['order', 'ASC'], 
    [models.ProjectImages, 'order', 'ASC'],
    [models.ProjectImages, models.Tags, models.ProjectImagesTags, 'order', 'ASC'],
],