在猫鼬(MERN)中获取新创建的mongo文档的时间戳

时间:2020-10-19 14:39:31

标签: node.js mongodb api express mongoose

我正在研究Twitter克隆以学习MERN堆栈,这是一条新的推文路线

router.route('/new')
    .post( (req, res) => {

        const { errors, isValid } = validateTweet(req.body);
        
        if (!isValid) {
            return res.status(400).json(errors);
        }
        let tweet = new Tweet({
            content: req.body.content,
            created_by: req.user.id
        })
        User.findById(req.user.id, (err, user) => {
            if (err) return res.status(400).json(err)
            
            user.tweets.push(tweet._id);
            user.save();
        });
        tweet.save();

        return res.status(201).json(tweet);
    });

哪个不返回tweet的时间戳,如何在不返回tweet的情况下查询数据库呢? 这是模型,以防万一:

const tweetSchema = new Schema({
    content: {
        type: String,
        required: true,
        minlength: 1,
        maxlength: 128,
        trim: true
    },
    created_by: {
        type: Schema.Types.ObjectId, ref: 'User',
        required: true
    }
}, {
    timestamps: true
});

const Tweet = mongoose.model('Tweet', tweetSchema);

1 个答案:

答案 0 :(得分:0)

我最终要做的是制作函数async,然后返回完成的save()的结果。不知道这是否是一个好习惯。

router.route('/new')
    .post( async (req, res) => {

        const { errors, isValid } = validateTweet(req.body);
        
        if (!isValid) {
            return res.status(400).json(errors);
        }
        let tweet = new Tweet({
            content: req.body.content,
            created_by: req.user.id
        })
        User.findById(req.user.id, (err, user) => {
            if (err) return res.status(400).json(err)
            
            user.tweets.push(tweet._id);
            user.save();
        });
        tweet = await tweet.save();

        return res.status(201).json(tweet);
    });