我定义了嵌套模式,当我填充输入时它啥也不返回,也不保存在 Mongodb
Posted
技术标签:
【中文标题】我定义了嵌套模式,当我填充输入时它啥也不返回,也不保存在 Mongodb【英文标题】:I define nested schema , when i fill the inputs it returns nothing and not save in Mongodb我定义了嵌套模式,当我填充输入时它什么也不返回,也不保存在 Mongodb 【发布时间】:2019-09-10 15:30:13 【问题描述】:我定义了嵌套模式,但是当我发送输入数据时什么都不返回, 我该如何解决这个问题? 这是我的结果:
"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 )
这是我的user.js
用于在 MongoDB 中保存输入数据我不知道这是不是真的:
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
)
)```
【问题讨论】:
【参考方案1】:问题在于定义获取输入的方式,我必须定义嵌套对象并在其中放置请求主体以及定义嵌套模式。
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
【讨论】:
【参考方案2】:在创建新用户之前,您需要要求您的“用户”moongose Schema。就像 dimitris tseggenes 说的那样。
我使用异步函数和 try/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 可以避免一些意外错误并处理它。
【讨论】:
【参考方案3】:您是否定义了userSchema
?如果没有,您正在尝试导出不存在的架构。同样,如果您尚未定义 userSchema
并且想要导出 allEduSchema
,请将模型文件的最后一行替换为:
const EduSchema = mongoose.model("EduSchema", allEduSchema);
module.exports = EduSchema;
【讨论】:
谢谢你,是的,我在我的代码中定义它并在我的问题中编辑它,但它仍然没有返回任何东西:( 你想做什么?你试过 Users.find() 吗? 我想将我的输入保存在数据库中,我发布了它们,但是当我获取数据时它不会返回任何内容,并且在数据库中只需保存_id!!! 我看到您创建了一个userEduSchema
模型,而不是 allEduSchema
模型。您必须改用它module.exports = mongoose.model('Users', userEduSchema )
。你也不需要创建_id
不幸的是,没有,当我定义简单模式时它可以工作,但是当像嵌套一样定义时它不会。我认为问题出在我的架构中,但不知道在哪里!?以上是关于我定义了嵌套模式,当我填充输入时它啥也不返回,也不保存在 Mongodb的主要内容,如果未能解决你的问题,请参考以下文章
为啥当我尝试访问绑定对象的属性时 Xamarin 啥也不呈现?