在mongoose中,我如何检查ObjectId数组中的所有元素是否都存在于数据库中

时间:2018-05-03 03:29:58

标签: javascript node.js mongodb mongoose mongoose-schema

我正在研究NodeJS RESTful API,当然使用mongoose和MongoDB。

我有像这样的猫鼬模型

const mySchema = mongoose.Schema({
  _id: {type: mongoose.Schema.Types.ObjectId},
  Cities: [{type: mongoose.Schema.Types.ObjectId, ref: 'City'}]

}

和这样的路线

router.post('/', (req, res, next) => {
    for (const cityId of req.body.cities) {
        City.findById(cityId)
            .then(city => {
                if (!city) {
                   return routingResult.NotFound(res, "One city doesnt exists.");
                }
             })
             .catch(err => {
                 console.error(err);
                 routingResult.Error(res, err);
             });

正如您所看到的,在创建新文档并保存之前,我试图检查req.body.cities数组中的所有元素是否都存在于数据库中。

我需要知道是否有办法同时检查所有元素。 (那些元素是ObjectID' s引用我的数据库上的另一个集合),类似于City.find({"$all":req.body.cities}) ...我知道这不是正确的实现,我只是想知道是否有类似的东西这一点。

如果任何objectId不存在,我不得创建要插入Cities集合的新文档。

有没有办法实现这个目标?

0 个答案:

没有答案