繁体   English   中英

Express/mongoose 在尝试获取请求时返回空数组

[英]Express/mongoose returns empty array when trying to get request

我正在尝试从数据库中获取书籍列表。 我在 mongoose 指南针上插入了数据。 我只得到一个空数组。

//Model File
import mongoose from "mongoose";

const bookSchema = mongoose.Schema({
  title: {
    type: String,
    required: true,
  },
  description: {
    type: String,
    required: true,
  },
  releasedDate: {
    type: String,
    required: true,
  },
});

const Book = mongoose.model("Book", bookSchema);
export default Book;


//Routes file
import express from "express";
import Book from "./bookModel.js";
const router = express.Router();

 router.get("/", async (req, res) => {
   const books = await Book.find({});

   res.status(200).json(books);
 });

确保您在 db 中有书籍数据。如果它在那里,请尝试将 then 和 catch 块添加到您的代码中。 然后你就会知道错误是什么。

await Book.find({})
.then((data) =>{
res.send(data)
})
.catch((err) =>{
res.send(err)
})

当您创建 model 时,通过new Schema更改mongoose.model并声明_id属性,例如:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

const Book = new Schema({
    _id: { type: Schema.ObjectId, auto: true },
    // other attributes
})

更新:如果它似乎不起作用,请尝试将_id更改为其他名称,例如bookIDid ,这可能是错误,请阅读https://github.com/Automattic/mongoose/issues/1285

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM