我已将我的应用程序连接到现有数据库。数据库表当前有 3 个条目,但是,当我使用 findAll 查询模型时,只返回一个空数组。我不确定这是否与数据库已经存在并通过模型连接到它有关。我也在同步模型目录中索引文件中的所有文件。
//Courses Model for sequelize
const Sequelize = require('sequelize');
module.exports = (sequelize) => {
class Courses extends Sequelize.Model{}
Courses.init({
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
title: {
type: Sequelize.STRING,
allowNull: false
},
description: {
type: Sequelize.TEXT,
allowNull: false
},
estimatedTime: {
type: Sequelize.STRING,
},
materialsNeeded: {
type: Sequelize.STRING,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false
},
userId: {
type: Sequelize.INTEGER,
references: { model: 'users', key: 'id' },
onDelete: 'CASCADE',
allowNull: false
}
}, {sequelize, modelName: 'courses'});
Courses.associate = (models) => {
models.courses.belongsTo(models.users, {foreignKey: "userId"});
};
return Courses
}
// Router with findAll query
const router = require('express').Router();
const db = require('../models/');
router.get('/', async(req, res) => {
try {
console.log(await db.courses.findAll());
} catch(err) {
console.error(err);
}
res.json({msg: "None"})
});
module.exports = router;
[这是目前的类(class)表][1]
[1]:/image/2KkK6.png
最佳答案
我猜这是 javascript 级别的问题。你不能像那样使用 await 语句。请先试试这个。
onst router = require('express').Router();
const db = require('../models/');
router.get('/', async (req, res) => {
try {
const courese = await db.courses.findAll()
console.log(courses)
res.send({ courses })
} catch(err) {
console.error(err);
}
res.json({msg: "None"})
});
module.exports = router;
如果运行后问题仍然存在,请检查您的配置是否指向正确的数据库。用于检查这是否是问题。
通过这样做,您可以检查代码中的真正问题是什么。
关于node.js - Sequelize findAll 方法不返回数据库中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65589446/