gpt4 book ai didi

javascript - 如何在sequelize上查询共享id表

转载 作者:行者123 更新时间:2023-11-29 19:15:24 24 4
gpt4 key购买 nike

我有 4 个表/模型共享 id 作为主键,但在示例中我只显示 2

User: {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
allowNull: false
}
Person: {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
allowNull: false
},
name: {
type: Sequelize.STRING
}

我使用的是共享ID,因此人员主键是用户的主键,它没有自动增量。那么有没有办法在这两个表之间建立连接呢?我尝试过做类似的事情:

getAll(){
return User.getAll({
include: [{
model:Person,
}]
})
}

但是由于没有关系,所以不起作用。我应该怎么办?谢谢

最佳答案

如果没有关系,则无法使用 include。您可以使用原始查询来检索信息,例如:

var queryString = 'select * from User u join Person p on u.id = p.id where u.id = :sharedId';

models.sequelize
.query(queryString, {
replacements: { shareId: id},
type: models.sequelize.QueryTypes.SELECT
})
.then(function(result) {
res.json(attendance);
});

但是您必须实现验证以确保表正确填充。

但是,我鼓励您在表之间实现关系,因为它会更易于维护。像这样的事情:

var User  = sequelize.define("User", {
id: { type: DataTypes.INTEGER, primaryKey: true},
name: { type: DataTypes.STRING, name: 'name' },
...
}, {
classMethods: {
associate: function(models) {
User.hasOne(models.Person);
}
}
});

var Person = sequelize.define("Person", {
id: { type: DataTypes.INTEGER, primaryKey: true},
name: { type: DataTypes.STRING, name: 'name' },
...
}, {
classMethods: {
associate: function(models) {
Person.belogsTo(models.User);
}
}
});

关于javascript - 如何在sequelize上查询共享id表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42752805/

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