Я действительно новичок в секвенции и выражении, и я уже много часов застрял, пытаясь обернуть голову вокруг ассоциаций, которые я хочу иметь в моей базе данных, и как получить информацию из моей базы данных.Я создал базу данных по бордерс-бордам (как в досках для серфинга ... и райдерам).У меня есть три основные модели: доски, всадники и производители.- У производителя много досок, и доска может принадлежать только производителю.Я не думаю, что у меня есть какие-либо проблемы с этой ассоциацией.- У гонщика может быть много досок, и доска может принадлежать многим гонщикам.
При заполнении базы данных у меня есть таблица RiderBoards с riderId иboardsId ... никаких проблем там нет ...
Иногда при запуске сервера я получаю ошибку OID, но затемон исчезает ...
СЕЙЧАС, в моем маршруте api / riders я пытаюсь получить массив со всеми объектами моего райдера, используя метод "findAll ()".Это не дает мне ничего, кроме пустого массива.Это проблема с моей базой данных или ассоциациями?Это проблема с моим маршрутом API?Это проблема подключения к моей базе данных?Как я могу получить то, что я хочу?Я был бы очень признателен за некоторые рекомендации по этому вопросу.
это мой маршрут api / riders:
const router = require('express').Router();
const asyncHandler = require('express-async-handler');
const { Rider } = require('../database/index');
router.get(
'/',
asyncHandler(async (req, res, next) => {
const allRiders = await Rider.findAll();
if(allRiders.length === 0){
console.log(allRiders);
res.json('No Riders found')
}else{
console.log(allRiders);
res.json({allRiders});
}
/* etc */
})
);
router.post('/', function (req, res, next) {
/* etc */
});
router.put('/:puppyId', function (req, res, next) {
/* etc */
});
router.delete('/:puppyId', function (req, res, next) {
/* etc */
});
module.exports = router;
это мой индекс к моим моделям БД:
"use strict";
const db = require("./db");
const Board = require("./board");
const Rider = require("./rider");
const Maker = require("./maker");
// Assosiations go here
Maker.hasMany(Board);
// Rider.hasMany(Board);
Board.belongsTo(Maker);
Board.belongsToMany(Rider,{through: 'RiderBoards'});
Rider.belongsToMany(Board,{through:'RiderBoards'});
module.exports = {
db,
Board,
Rider,
Maker
};
это мой индекс на стороне сервера:
const express = require("express");
const session = require("express-session"); // sessions allow us to keep user autheticated even after refreshing their browser window
const app = express();
const morgan = require("morgan");
const path = require("path");
const apiRoutes = require("./api");
const db = require("./database/db");
const passport = require("passport");
const SequelizeStore = require("connect-session-sequelize")(session.Store);
const dbStore = new SequelizeStore({ db: db });
dbStore.sync();
//logging middleware
app.use(morgan("dev"));
//static middleware
app.use(express.static(path.join(__dirname, "../public")));
app.use(express.json());
app.use(express.urlencoded({ extended: true })); // The “extended” syntax allows for rich objects and arrays to be encoded into the URL-encoded format
app.use('/api', apiRoutes);
app.use(
session({
secret: process.env.SESSION_SECRET || "Some insecurely saved secret", // the process.env.SESSION_SECRET allows us to use the secret from the enviroment variable instead of exposing our own secret
resave: false,
saveUninitialized: false,
store: dbStore
// duration: -> how long willthe session be alive for
// activeDuration: INT -> before logging an user out, it allows INT extra time if require by the user
})
);
app.use(passport.initialize()); // We initilize passport so that it will consume our req.session object, and attach the user to the request object.
app.use(passport.session());
app.get("*", (req, res, next) => {
res.sendFile(path.join(__dirname, "../public/index.html"));
});
app.use((req, res, next) => {
console.log(err);
console.log(err.stack);
res.status(err.status || 500).send(err.message || "internal server error.");
});
module.exports = app;
Спасибо за любую помощь / руководство в этом!