簡體   English   中英

如何從節點快遞中的 model 獲取數據?

[英]How to get data from model in node express?

我是 MERN 和 stackoverflow 的新手。 我想從 mongodb 數據庫中獲取所有數據。 但是當我通過 postman 嘗試時,它顯示以下錯誤。

在此處輸入圖像描述

這是我的 Model.js 文件Model.js

const mongoose = require("mongoose");

const Schema = {
    name: {
        type: String,
        required: true
    },
    code: {
        type: String,
        required: true
    },
    passMark: {
        type: Number,
        required: true
    },
    lic: {
        type: String,
        required: true
    },
    subjects: [
        { 
            type: mongoose.Schema.Types.ObjectId, 
            required: false, 
            ref: 'Subjects' 
        }
    ]
};

const Model= mongoose.model("Model",Schema);

module.exports = Model;

這是我的 router.js 文件Router.js

const Model= require("../models/Model");
const route = require("express").Router();

route.get("/", (req,res)=>{
    Model.find()
   .exec((err, items)=>{
        if(!err){
            return res.json({items: items})
        }
    })
});

有人可以幫我解決這個問題。

這是一個盲目的猜測,但我相信錯誤的發生是因為Model.find()沒有返回 JSON 數據。 它返回 Mongoose 對象的集合,並帶有額外的方法,例如.save() 如果你想要純 JSON 從 Mongo 出來,添加.lean()

route.get("/", (req,res)=>{
    Model.find().lean()
   .exec((err, items)=>{
        if(!err){
            return res.json({items: items})
        }
    })
});

專業提示,使用 async/await 語法同樣的事情:

route.get("/", async (req,res)=>{
   try{
       const items = await Model.find().lean().exec(); // .exec() returns a true Promise
       res.json({items});
   } catch(err) {
      res.status(500).end(err)
   }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM