我定义了嵌套模式,当我填充输入时它啥也不返回,也不保存在 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的主要内容,如果未能解决你的问题,请参考以下文章

ruby on rails profiler 啥也不返回

PHP - 单击时按钮类型提交啥也不做

为啥当我尝试访问绑定对象的属性时 Xamarin 啥也不呈现?

Bower 中的 Visual Studio 2015 还原包啥也不做

android:fusion 图表啥也不显示

HIVE:如果存在则替换行中的字符串/模式,否则啥也不做