确定如何检索结果集数据node.js + sequelize +外键mysql

问题描述

搜索了几篇文章。关于会员资格和加入的信息很多。但是我无法解决的问题我之所以这么认为,部分原因是我是这些工具的初学者。 我们来看一下数据:

Categoria.js

const db   = require("./db");
const Categoria = db.sequelize.define('categorias',{
    nome: {
        type : db.Sequelize.STRING
    },slug: {
        type: db.Sequelize.TEXT
    } 
})
module.exports = Categoria

Postagem.js

const Categoria = require("./Categoria");
const db   = require("./db");
const Postagem = db.sequelize.define('postagens',{
    titulo: {
        type : db.Sequelize.STRING,required : true
    },slug: {
        type: db.Sequelize.TEXT,descricao: {
        type : db.Sequelize.STRING,conteudo: {
        type : db.Sequelize.STRING,categoriaId: {  // esse atributo é chave estrangeira
        type: db.Sequelize.INTEGER,required : true,allowNull: false,references: {            // Postagem belongsTo Categoria 1:1
          model: 'categorias',// nome da tabela
          key: 'id'              // nome da coluna na tabela
        }
    }      
})

Postagem.belongsTo(Categoria,{ foreignKey: 'categoriaId',foreignKeyConstraint: true,as: 'categoria' });

module.exports = Postagem

数据读取:

router.get("/postagens",(req,res) => {
    Postagem.findAll({
        include:[
            {
                model: Categoria,require: true,as: 'categoria'

            }] 
    }).then(function(postagens){ 
       console.log(postagens) 
       res.render("admin/postagens",{postagens: postagens}) 
    }).catch(function(erro){
        req.flash("error_msg","Erro ao procurar postagens: " + erro)
        res.redirect("/admin")
    })     
})

精选句子(完美):

SELECT `postagens`.`id`,`postagens`.`titulo`,`postagens`.`slug`,`postagens`.`descricao`,`postagens`.`conteudo`,`postagens`.`categoriaId`,`postagens`.`createdAt`,`postagens`.`updatedAt`,`categoria`.`id` AS `categoria.id`,`categoria`.`nome` AS `categoria.nome`,`categoria`.`slug` AS `categoria.slug`,`categoria`.`createdAt` AS `categoria.createdAt`,`categoria`.`updatedAt` AS `categoria.updatedAt` FROM `postagens` AS `postagens` LEFT OUTER JOIN `categorias` AS `categoria` ON `postagens`.`categoriaId` = `categoria`.`id`;

Json邮编:

[
  postagens {
    dataValues: {
      id: 2,titulo: 'UX',slug: 'ux',descricao: 'O que é UX?',conteudo: 'O conceito de ux na web bla bla bla bla bla e mais bla',categoriaId: 1,createdAt: 2020-10-21T14:05:32.000Z,updatedAt: 2020-10-21T14:05:32.000Z,categoria: [categorias]
    },...

问题:

不显示类别内容,仅显示:类别:[categorias]。 我应该如何访问categoria.nome字段?

解决方法

只需从这样的模型实例中获取普通对象:

const plainObjects = postagens.map(x => x.get({ plain: true }))