gpt4 book ai didi

node.js - nodejs 使用 hasmany 对连接 2 表进行 Sequelize

转载 作者:行者123 更新时间:2023-12-03 22:39:11 24 4
gpt4 key购买 nike

我是 nodejs 的新手。我正在使用 nodejs 创建新应用程序。我想使用 hasmany 关系加入两个表城市和州。

这是我的状态模型 state.js

module.exports = function(sequelize, DataTypes) {
return sequelize.define('state', {
name: {
type: DataTypes.STRING(255),
allowNull: true
},
id: {
type: DataTypes.INTEGER(10).UNSIGNED,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
createdAt: {
type: DataTypes.DATE,
allowNull: true
},
updatedAt: {
type: DataTypes.DATE,
allowNull: true
}
}, {
tableName: 'state'
});
};

这是我的城市模型 city.js
module.exports = function(sequelize, DataTypes) {
return sequelize.define('city', {
state: {
type: DataTypes.INTEGER(11),
allowNull: true
},
name: {
type: DataTypes.STRING(255),
allowNull: true
},
id: {
type: DataTypes.INTEGER(10).UNSIGNED,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
createdAt: {
type: DataTypes.DATE,
allowNull: true
},
updatedAt: {
type: DataTypes.DATE,
allowNull: true
}
}, {
tableName: 'city'
});
};

这是我的 citycontroller.js
let City = require('../models').city;
let State = require('../models').state;
let message = require('../../config/message');
let Boom = require('boom');

module.exports = {

listCity: async(request,h) =>{
let stateid = request.query.stateid;
try{
let searchQuery = {};
if(stateid) searchQuery.state = stateid;
let listCity = await City.findAll({ where:searchQuery});
if(listCity.length){
let response = {
"statusCode": 200,
"message":message.DATAFOUND,
"result": listCity
};
return h.response(response).code(200);
}else{
return h.response(response).code(204);
}
}catch(err){
return Boom.badRequest(err.message);
}
},

};

输出:
{
"statusCode": 200,
"message": "Data found",
"result": [
{
"state": 1,
"name": "Los Angeles",
"id": 1,
"createdAt": null,
"updatedAt": null
},
{
"state": 1,
"name": "San Francisco",
"id": 2,
"createdAt": null,
"updatedAt": null
},
{
"state": 5,
"name": "Southhampton",
"id": 3,
"createdAt": null,
"updatedAt": null
}
]
}

现在它只列出城市详细信息。但我还需要在每个城市下加入州详细信息。

最佳答案

  • 如果要从状态表中选择数据而不是在状态模型中定义关系。
    module.exports = function(sequelize, DataTypes) {
    const state = sequelize.define('state', {
    name: {
    type: DataTypes.STRING(255),
    allowNull: true
    },
    id: {
    type: DataTypes.INTEGER(10).UNSIGNED,
    allowNull: false,
    primaryKey: true,
    autoIncrement: true
    },
    createdAt: {
    type: DataTypes.DATE,
    allowNull: true
    },
    updatedAt: {
    type: DataTypes.DATE,
    allowNull: true
    }
    }, {
    tableName: 'state'
    });

    state.associate = function(model){
    models.state.hasMany(models.city){
    foreignKey: 'state'
    }
    return state;
    }

    };
  • 或者如果你想从 city 表中选择数据而不是在 city 表中定义一个类似的 hasOne 关系。
  • 关于node.js - nodejs 使用 hasmany 对连接 2 表进行 Sequelize ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52676755/

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