Node.js 我定义了嵌套模式,当我填充输入时,它不返回任何内容,也不保存在Mongodb中
我定义了嵌套模式,但当我发送输入数据时,什么也不返回, 如何解决此问题?Node.js 我定义了嵌套模式,当我填充输入时,它不返回任何内容,也不保存在Mongodb中,node.js,express,mongoose,nested,schema,Node.js,Express,Mongoose,Nested,Schema,我定义了嵌套模式,但当我发送输入数据时,什么也不返回, 如何解决此问题? 这是我的结果: { "message": "handeling post request to /user-api", "CreatedUserInfo": { "_id": "5cbb7fbaad28fe209099a57c" } } 这是我的代码: const userEduSchema = new mongoose.Schema( { eduLevel
这是我的结果:
{
"message": "handeling post request to /user-api",
"CreatedUserInfo": {
"_id": "5cbb7fbaad28fe209099a57c"
}
}
这是我的代码:
const userEduSchema = new mongoose.Schema(
{
eduLevel : String ,
eduField : String,
eduInst :String,
eduCity :String,
eduDate :Date,
proposalTitle :String
}
)
const allEduSchema = new mongoose.Schema(
{
bsc: userEduSchema,
master: userEduSchema,
phd: userEduSchema ,
}
)
module.exports = mongoose.model('Users', allEduSchema )
这是我在MongoDB中保存输入数据的user.js
,我不知道这是不是真的:
const userModels = require('../../models/userModels')
router.post('/', (req , res, next) => {
const user = new userModels({
_id : new mongoose.Types.ObjectId,
eduLevel :req.body.eduLevel,
eduField :req.body.eduField,
eduInst :req.body.eduInst,
eduCity :req.body.eduCity,
eduDate :req.body.eduDates,
proposalTitle :req.body.proposalTitle,
})
user.save().then(result =>{
console.log(result)
}).catch (err => {
console.log(err)
})
res.status(201).json ({
message:'handeling post request to /user-api',
CreatedUserInfo : user
})
})```
您是否定义了
userSchema
?否则,您将尝试导出一个不存在的架构。同样,如果您尚未定义userSchema
,并且希望导出allEduSchema
,请将模型文件的最后一行替换为以下内容:
const EduSchema = mongoose.model("EduSchema", allEduSchema);
module.exports = EduSchema;
在创建新用户之前,需要使用“用户”moongose模式。就像dimitris tseggenes说的 我使用异步函数并尝试/catch来处理这个问题。也许您可以
router.post("/", async (request, response) => {
try {
const user = new Users({new user's data here..... });
const result = await user.save();
response.send(result);
} catch (error) {
response.status(400).send(error);
}
}))
try-catch可以避免一些意外错误并进行处理。问题在于定义获取输入的方式,我必须定义嵌套对象,并在其中放置请求主体以及定义嵌套模式
bsc:{
bscEduLevel :req.body.bscEduLevel,
bscEduField :req.body.bscEduField,
bscEduInst :req.body.bscEduInst,
bscEduCity :req.body.bscEduCity,
bscEduDate :req.body.bscEduDate,
bscProposalTitle :req.body.bscProposalTitle
}
谢谢你,是的,我在我的代码中定义了它,并在我的问题中编辑了它,但它仍然没有返回任何内容:(你想做什么?你尝试过Users.find()吗?)?我想把我的输入保存在数据库中,我发布它们,但是当我获取数据时,它不会返回任何东西,而在数据库中只保存_id!!!我看到你创建了一个
userEduSchema
模型,而不是allEduSchema
模型。你必须使用这个来代替module.exports=mongoose.model('Users',userEduSchema)
。此外,您不需要创建_id。不幸的是,不,当我定义简单模式时,它可以工作,但当定义为嵌套模式时,它不能工作。我认为问题在我的模式中,但不知道在哪里!?