Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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上查询共享ID表_Javascript_Mysql_Node.js_Sequelize.js - Fatal编程技术网

Javascript 如何在sequelize上查询共享ID表

Javascript 如何在sequelize上查询共享ID表,javascript,mysql,node.js,sequelize.js,Javascript,Mysql,Node.js,Sequelize.js,我有4个表/模型,它们将ID作为主键共享,但对于示例,我将只显示2个 User: { id: { type: Sequelize.INTEGER, primaryKey: true, allowNull: false } Person: { id: { type: Sequelize.INTEGER, primaryKey: true, allowNull: false

我有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,所以person主键是用户的主键,它没有自动识别功能。那么有没有办法在这两个表之间建立连接呢?我试着做一些类似的事情:

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);
    }
  }
});