Как я могу создать пост, у меня есть две модели мангустов, ссылающиеся друг на друга - PullRequest
0 голосов
/ 25 июня 2019

По сути, я хочу создать пост, в котором есть его автор и имя пользователя, того, кто его создал.Я также хочу, чтобы сообщение было помещено в массив сообщений, который имеется в модели пользователя, который ссылается на «Опубликовать».

Я гуглял и смотрел видео на YouTube, но все еще не понимаюкак я собираюсь это сделать, также я прочитал о заполнении, но я хочу создать новый пост и сделать так, чтобы автор был именем пользователя, также я хочу, чтобы пост был помещен в массив постов, которые есть у пользователя.

Как бы я поступил так?

Это контроллер создания записи

exports.postCreatePost = (req, res, ) => {

    const {
        title,
        description,
        context
    } = req.body;

    const post = new Post({
        title,
        description,
        context,
        author: 
    })

}

Это модель.js

    const mongoose = require("mongoose"),
        Schema = mongoose.Schema,
        bcrypt = require("bcryptjs");


        const postSchema = new Schema({
            title: String,
            description: String,
            context: String,
            author: {
                type: Schema.Types.ObjectId,
                ref: "User"
            }
        });

        const userSchema = new Schema({
            name: {
                type: String,
                required: true
            },

            email: {
                type: String,
                required: true,
            },

            password: {
                type: String,
                required: true
            },

            posts: [{
                type: Schema.Types.ObjectId,
                ref: "Post"
            }]
        });


        userSchema.pre("save", async function save(next) {
            const user = this;
            if (!user.isModified("password")) return next();
            const hashedPassword = await bcrypt.hash(user.password, 10);
            user.password = hashedPassword;
            next();
        });

const Post = mongoose.model("Post", postSchema);
const User = mongoose.model("User", userSchema);
const userId = new mongoose.Types.ObjectId();

1 Ответ

0 голосов
/ 25 июня 2019

Либо разрешите клиенту отправить вам имя пользователя / идентификатор и получить его от req.body, либо, когда вы аутентифицируете пользователя, просто передайте ссылку на пользователя в тело запроса.

Например, когда клиент дает вам идентификатор / имя пользователя, вы можете сделать что-то вроде этого

const post = new Post({
    title,
    description,
    context,
    author: req.body.username or req.body.id
})

Если вы хотите нажать, используйте это

await findOneAndUpdate({_id: req.body.id}, {
        "$push":
        {
            "posts": post._id
        }
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...