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