首页 > 解决方案 > 是否可以同时在不同模型上使用猫鼬函数 find() ?

问题描述

我正在使用 expressJS,我的问题是关于我的控制器之一;如果它们各自的属性“汉字”与 URL 中作为参数传递的汉字匹配,我正在研究 3 个不同的模型。为此,我在我的 3 个模型上调用函数 find(),并将所有结果存储在变量“结果”中以返回它:

const Word = require('../models/wordModel');
const Verb = require('../models/verbModel');
const Adj = require('../models/adjectiveModel');

exports.getWordsByKanji = (req, res, next) => {

let result = [];

Word.find({kanji: {"$regex": req.params.kanji, "$options": "i"}})
    .then(word => {
        result = word;

        Verb.find({kanji: {"$regex": req.params.kanji, "$options": "i"}})
            .then(verb => {
                
                for(let i = 0; i < verb.length; i++) {
                    result.push(verb[i])
                }
                
                Adj.find({kanji: {"$regex": req.params.kanji, "$options": "i"}})
                    .then(adj => {
                        
                        for(let i = 0; i < adj.length; i++) {
                            result.push(adj[i])
                        }
                        
                        res.status(200).json(result)
                    })
            })
    })
    .catch((error) => res.status(500).json({ 'Error': error }));
}

这运作良好,但我想知道是否有更有效的方法来做到这一点。这个函数看起来很重,有很多数据,而且它并不是真正的 DRY。干杯!

标签: javascriptexpressmongoose

解决方案


推荐阅读