node.js - 如何验证 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});
}
});
解决方案
推荐阅读
- php - 后数组不存储文件输入
- mysql - 如何在mysql中按范围分组并执行聚合?
- c - 在 C 中查找字符的 ASCII 码
- dataframe - DataFrames : 没有方法匹配 setindex!(::DataFrame, ::Tuple{Float64, Float64}, ::Colon, ::String)
- pytorch - 如何理解不满足 Cauchy Reimann 方程的复杂函数的梯度
- oracle - Oracle LogMiner 结果不一致
- powerbi - 如何在 Power BI Dax 中获取最近 3 天的价格
- flutter - 是否在颤振队列中隔离在其端口上接收到的值?如果是,那么我如何确保它仅适用于最新消息?
- c# - 大摇大摆地在 asp.net 中运行
- wso2 - 使用 APIM 4.0.0 配置分析不起作用