[英]Building an API with node and express, how to get json data from a url?
[英]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.