首页 > 解决方案 > 如何验证 mongoDB 对象 ID 数组?

问题描述

我正在使用 Node、Express 和 MongoDB 构建一个 REST API 记录集合,用户可以在其中添加艺术家、添加记录、将记录添加到艺术家以及将艺术家添加到记录。

这是我的“提交记录”发布请求,其中“艺术家”是引用已创建艺术家对象的对象 ID 数组。但是,现在,您可以添加具有无效艺术家 ID(即不存在的艺术家的 ID)的记录。

有没有办法在保存之前验证艺术家 ID 数组中的每个元素(即验证每个 ID 属于一个艺术家对象)?

// TODO: VALIDATE ALL ARTISTS EXIST BEFORE ADDING RECORD
router.post('/records', async (req, res) => {
    let record = new Record({
        name: req.body.name,
        releaseDate: req.body.releaseDate,
        link: req.body.link,
        artists: req.body.artists
    });
    try {
        const savedRecord = await record.save();

        // UPDATE ARTIST
         const artist = record.artists.map(element => Artist.updateOne({_id: element}, {$push: {records: record}}));
         await Promise.all(artist);

        res.status(200).json(savedRecord);
    } catch (err) {
        res.status(500).json({message: err.message});
    }
});

标签: node.jsmongodbexpressmongoose

解决方案


推荐阅读