如何从节点快递中的模型中获取数据?
How to get data from model in node express?
我是 MERN 和 Whosebug 的新手。
我想从 mongodb 数据库中获取所有数据。但是当我通过邮递员尝试时,它显示以下错误。
这是我的 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()
没有 return JSON 数据。它 return 是 Mongoose 对象的集合,具有像 .save()
这样的额外方法。如果你想要 Mongo 中的纯 JSON,请添加 .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)
}
});
我是 MERN 和 Whosebug 的新手。 我想从 mongodb 数据库中获取所有数据。但是当我通过邮递员尝试时,它显示以下错误。
这是我的 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()
没有 return JSON 数据。它 return 是 Mongoose 对象的集合,具有像 .save()
这样的额外方法。如果你想要 Mongo 中的纯 JSON,请添加 .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)
}
});