微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的嵌套文档不显示,猫鼬,快递

如何解决我的嵌套文档不显示,猫鼬,快递

我为 MERN 堆栈项目创建了一个 UserSchema,我想在创建的用户中嵌套文档。当我注册用户时,我试图在嵌套文档中发布虚拟数据只是为了看到它们会显示在 MongoDB Atlas 和 Postman 中,但是当我点击数组时,即使我输入了信息,它也没有在数组中显示任何内容

这是我的代码

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const ClassworkSchema = new Schema({
    name: String,time: Date,todo: String,isDone: false
});

const OutcomesSchema = new Schema({
    name: String,isDone: false,isApproved: false
})

const MeetupSchema = new Schema({
    name: String,location: String,attended: false
})
const UserSchema = new Schema({
    name: {
      type: String,required: true
    },email: {
      type: String,password: {
      type: String,date: {
      type: Date,default: Date.Now
    },classwork: [ClassworkSchema],outcomes: [OutcomesSchema],meetups: [MeetupSchema],});


// const UserSchema = new Schema({
//     name: {type: String,required: true},//     email: {type: String,//     password: {type: String,//     date: {type: Date,default: Date.Now},// })

module.exports= User = mongoose.model('users',UserSchema);

控制器

const express = require("express");

const router = express.Router();

const bcrypt = require("bcryptjs");

const jwt = require ("jsonwebtoken");

const keys = require("../../config/key");


const validateRegisterInput = require("../../validation/register");
const validateLoginInput = require("../../validation/login");


const User = require("../../models/User");



router.post("/register",(req,res) => {





//FORM VALIDATION

const {errors,isValid } = validateRegisterInput(req.body)


//CHECK VALIDATION

if(!isValid) {
    return res.status(400).json(errors)
}

User.findOne({ email: req.body.email }).then( returnedUser => {
    
    if(returnedUser) {
        return res.status(400).json({email: "Email already exists"});
    }
});


// saving user with request information to database
const newUser = new User({
    name: req.body.name,email: req.body.email,password: req.body.password,});

bcrypt.genSalt(10,(err,salt)=>{
    bcrypt.hash(newUser.password,salt,hash)=>{
        if(err) throw err;
        newUser.password = hash;

        newUser
            .save()
            .then(user => res.json(user))
            .catch(err => console.log(err));
        });
    });

});







router.post("/login",res)=>{


const {errors,isValid} = validateLoginInput(req.body)
if(!isValid){
    return res.status(400).json(errors)
}

const email = req.body.email;
const password = req.body.password


User.findOne({ email: email }).then(user =>{

    if(!user){
        return res.status(404).json({ emailNotFound: "Email not found"});
    }

    bcrypt.compare(password,user.password).then(isMatch => {
        if(isMatch){


            const payload = { id: user.id,name: user.name };

            jwt.sign(payload,keys.secretorKey,{expiresIn: 31556926},token) => {
                    res.json({ success: true,token: "Bearer " + token });
            });
        } else {
            return res.status(400)
            .json({passwordincorrect: "password incorrect"})
        }
    })
})

});
module.exports = router;

服务器

const express = require("express");

const mongoose = require("mongoose");

const bodyParser = require("body-parser");

const passport = require("passport");


const app = express();
const users = require("./controllers/api/users")
// const classwork = require("./controllers/api/classwork")


app.use(

    bodyParser.urlencoded({
        extended: false
    })
);

app.use(bodyParser.json());

//DATA BASE CONfigURATION

const dbkeys = require("./config/key").mongoURI;

mongoose.connect( 
    dbkeys,{useNewUrlParser: true} )

        .then(()=> console.log("database connection successful"))
        .catch(err => console.log(err))

app.use(passport.initialize());
require("./config/passport")(passport);


app.use("/api/users",users);

// app.use("/api/classwork",classwork)


const port = 5000;

app.listen( port,() => console.log("server us up and running on port 5000!"))

mongodb atlas,no object shows when the arrow is clicked Postman

解决方法

这是因为它等待的不是你通过的东西。当因为类型不正确而不会将任何内容保存到数据库时,从猫鼬文档中应该这样编写:

swiper

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。