首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用mongoose引用另一个模型中的模型?

如何使用mongoose引用另一个模型中的模型?
EN

Stack Overflow用户
提问于 2021-02-22 07:54:39
回答 1查看 69关注 0票数 0

我是node和mongoose的新手,还在学习很多东西。基本上,我正在尝试创建一个论坛页面。我有一个forumpost模式,最近我添加了一个新字段,我想要显示哪个用户发布了它。我已经在网上读到了其他问题,我能够遵循上面的代码,但是我的代码仍然不能工作。当我在atlas中检查我的数据时,它仍然缺少我添加的新的‘提交人’字段。我已经删除了‘集合’,并重新开始,但它仍然丢失。任何帮助都将不胜感激。下面是我的模型,以及数据是如何发布到数据库的截屏。

代码语言:javascript
运行
复制
**Post Form Schema** 

const mongoose = require('mongoose');

const PostSchema = new mongoose.Schema({
    title: {
        type: String,
        required: true
    },
    body: {
        type: String,
        required: true,
    },
    date: {
        type: Date,
        default: Date.now,
        required: true,
    },
    submittedBy: { *(this is where I would like to get the user who submitted the form)*
        type: mongoose.Schema.Types.ObjectId, 
        ref: 'User',
    },
    extraInfo: {
        type: String,
        default: 'Other info goes here',
    }
})

const Post = mongoose.model('Post', PostSchema);
module.exports = Post;
代码语言:javascript
运行
复制
**Users Form Schema**

const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    date: {
        type: Date,
        default: Date.now
    }
});

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

编辑:这是我的新帖子路线

代码语言:javascript
运行
复制
const express = require('express');
const Post = require('../models/post');
const router = express.Router();
const {ensureAuthenticated} = require("../config/auth.js");

router.get('/', ensureAuthenticated, (req, res) => {
    res.render('newPost')
})

router.post('/', ensureAuthenticated, (req, res) => {
    const post = new Post(req.body);
    console.log(req.body)

    post.save()
    .then((result) => {
        res.redirect('/dashboard')
    })
    .catch((err) => {
        console.log(err)
    })
})

module.exports = router;
EN

Stack Overflow用户

发布于 2021-02-22 12:28:16

如果我没记错的话,您可以验证是否使用"ensureAuthenticated“中间件进行了身份验证(用户ID应该在那里),但是在创建"Post”时,您只能使用正文数据进行验证。

如下所示(您应该将"userId“替换为您的属性名):

代码语言:javascript
运行
复制
const post = new Post({ ...req.body, submittedBy: userId })
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66308440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档