Javascript 续集关联和api路由。无法从数据库中检索信息

Javascript 续集关联和api路由。无法从数据库中检索信息,javascript,express,server,sequelize.js,Javascript,Express,Server,Sequelize.js,我对sequelize和express真的是个新手,我已经花了好几个小时试图在我的数据库中找到我想要的关联,以及如何从数据库中检索信息。我创建了一个冲浪板(如冲浪板…和骑手)数据库。我有三个主要的模型:滑板、骑手和制造商。 -一个制造者有许多板,一块板只能属于一个制造者。我想我对这个协会没有任何问题。 -一个骑手可以有许多棋盘,一个棋盘可以属于许多骑手 填充数据库时,我有一个带有riderId和boardsId的ridboards表。。。到那里没问题 有时,当启动我的服务器时,我会收到一个OID

我对sequelize和express真的是个新手,我已经花了好几个小时试图在我的数据库中找到我想要的关联,以及如何从数据库中检索信息。我创建了一个冲浪板(如冲浪板…和骑手)数据库。我有三个主要的模型:滑板、骑手和制造商。 -一个制造者有许多板,一块板只能属于一个制造者。我想我对这个协会没有任何问题。 -一个骑手可以有许多棋盘,一个棋盘可以属于许多骑手

填充数据库时,我有一个带有riderId和boardsId的ridboards表。。。到那里没问题

有时,当启动我的服务器时,我会收到一个OID错误,但它会消失

现在,在我的api/riders路线中,我尝试使用“findAll()”方法检索一个数组,其中包含我的所有rider对象。除了一个空数组,它没有给我任何东西。这是我的数据库或关联的问题吗?我的api路由有问题吗?连接到我的数据库有问题吗?我怎样才能找回我想要的东西?我真的很想得到一些指导

这是我的api/骑手路线:

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;

感谢您在这方面的帮助/指导

我终于发现了发生的事情:每次我的数据库同步时,我都强制执行true!将其更改为true会将我的记录保留在数据库中,因此当我的查询被命中时,有实际记录要拉入put

我相信您会检查数据库中是否有条目。当这种情况发生在我身上时,由于节点_env,我在错误的数据库中查找。您可以
创建一个对象,然后
findAll
。类似于这样的
Rider.create({…})。然后(()=>{Rider.findAll()…
我想我的问题是每次我都强制执行true!感谢您回答@AbhinavD!!