当前位置: 首页 > 面试题库 >

根据关联顺序查找

李甫
2023-03-14
问题内容

如何使用Sequelize查找关系中的某个列满足条件的所有人?

一个示例是查找所有作者姓氏为“ Hitchcock”的图书。书籍架构包含与Author’s表的hasOne关系。

编辑:我了解如何使用原始SQL查询来完成,但是正在寻找另一种方法


问题答案:

这是一个有效的示例,说明如何让Sequelize
Books通过Author具有特定姓氏的来获取全部信息。它看起来比实际要复杂得多,因为我正在定义模型,将它们关联,与数据库同步(以创建其表),然后在这些新表中创建虚拟数据。findAll在代码中间查找,以明确了解您要执行的操作。

    module.exports = function(sequelize, DataTypes) {

    var Author = sequelize.define('Author', {

        id: {
            type: DataTypes.INTEGER,
            allowNull: false,
            autoIncrement: true,
            primaryKey: true
        },
        firstName: {
            type: DataTypes.STRING
        },
        lastName: {
            type: DataTypes.STRING
        }

    })

    var Book = sequelize.define('Book', {

        id: {
            type: DataTypes.INTEGER,
            allowNull: false,
            autoIncrement: true,
            primaryKey: true
        },
        title: {
            type: DataTypes.STRING
        }

    })

    var firstAuthor;
    var secondAuthor;

    Author.hasMany(Book)
    Book.belongsTo(Author)

    Author.sync({ force: true })
        .then(function() {
            return Book.sync({ force: true });
        })
        .then(function() {
            return Author.create({firstName: 'Test', lastName: 'Testerson'});
        })
        .then(function(author1) {
            firstAuthor=author1;
            return Author.create({firstName: 'The Invisible', lastName: 'Hand'});
        })
        .then(function(author2) {
            secondAuthor=author2
            return Book.create({AuthorId: firstAuthor.id, title: 'A simple book'});
        })
        .then(function() {
            return Book.create({AuthorId: firstAuthor.id, title: 'Another book'});
        })
        .then(function() {
            return Book.create({AuthorId: secondAuthor.id, title: 'Some other book'});
        })
        .then(function() {
            // This is the part you're after.
            return Book.findAll({
                where: {
                   'Authors.lastName': 'Testerson'
                },
                include: [
                    {model: Author, as: Author.tableName}
                ]
            });
        })
        .then(function(books) { 
            console.log('There are ' + books.length + ' books by Test Testerson')
        });
  }


 类似资料:
  • 问题内容: 我有一个联合查询,它从两个不同的总体中获取计数。如何强制结果按查询中写入的顺序而不是升序/降序返回? 我希望第一个结果始终作为第一行返回。这可能吗? 问题答案: 您必须使用ORDER BY子句指定订单。在您的示例中,您可以执行以下操作:

  • 问题内容: 因此,此脚本返回以下内容: 这很合情理,只是我希望它返回此值: 我希望它在击中一组新香蕉时重新开始计数。显然,我的数据并不是真正的香蕉,但它使可视化变得容易。 香蕉的这种复发被认为是新出现的,因此,我们希望在看到这种情况时从一个开始计数。我一直在绞尽脑汁,想不出一个好方法来做到这一点。我了解为什么它不起作用,但是想不出一种使它起作用的方法。关于最佳方法的任何建议吗? 问题答案: 有几种

  • Nodejs。顺序4.41。尝试通过另一个表制作两个多对多关系的模型。例如,使用sequelize-cli运行... 这里有模特 和 留档里有短语 属于多个关联用于连接具有多个目标的源。此外,目标也可以连接到多个源。 这将创建一个名为UserProject的新模型,该模型具有等效的外键Project ectId和userId。 迁移是 和 为什么在我运行迁移时,它不创建模型CameraRelay,

  • 我有一个webservice,当我调用该webservice时得到这个响应。 现在我要根据我在这个数组中得到的顺序对这个完整的数组进行排序?我怎样才能做到这一点呢?

  • 一个user有多个tel,是一对多的关系,现在我只需要查最新的一条即可,没必要把tel全查出来,应该怎么写?

  • 问题内容: 我有一个表格,其中包含有关 民事和劳工* 两类人员可以完成的不同类型事件的信息 * 所以对于他们每个人,我都有各自的表格 然后事件表会列出所有可能的事件 然后我打算将信息存储在其他表中 具有eventype的人,从事这项工作的人(工人或公民) 现在在这个设计中,如果我只有一种人(又称“平民”),我不知道如何与谁完成工作相关联,而我只会在最后一张表中将“ civil_id”存储在“人”字