如何修复返回空数组的猫鼬查询

时间:2019-09-12 10:29:45

标签: node.js mongoose

我正在尝试查询数据库中的记录,但是得到一个空数组。我不知道我在做什么错?我觉得问题可能出在我的架构上,这里是:

我的模式

const QuizSchema = new Schema({

    question: {
        type:String,
        default:''
    },
    answers: [{
        type: {
            type: String,
            default:''
        },
        content: {
            type: String,
            default:''
        },
    }]
});

module.exports=Quiz=mongoose.model('quizes',QuizSchema,'quiz');

这是猫鼬查询

const Quiz = require('../../models/Quiz');

router.get('/',(req,res)=>{

Quiz.find({},null)
.then(data=>res.json(data))
.catch(err=>console.log(err))
});
module.exports = router;


这是一个示例JSON数据

{
        "question": "What is a Mongoose ? ",
        "answers": [
            { "type": "Smart","content": "Animal" }, {"type": "Subpar", "content": "Software"}, { "type": "Confused", "content": "Poem" }]

    }


非常感谢您的协助。预先感谢!

2 个答案:

答案 0 :(得分:1)

<query>.then不返回数据。您应该使用<query>.exec().then访问查询返回的数据。因此,将您的代码更改为:

Quiz.find({},null)
.exec()
.then(data=>res.json(data))
.catch(err=>console.log(err))
});
module.exports = router;

来源:Mongoose docs

答案 1 :(得分:0)

像这样修改架构:在数组内部,不接受像'type'这样的字段名称。

const QuizSchema = new Schema({

    question: {
        type:String,
        default:''
    },
    answers: [{
        ans_type: { // CHANGE HERE
            type: String,
            default:''
        },
        content: {
            type: String,
            default:''
        },
    }]
});

module.exports=Quiz=mongoose.model('quizes',QuizSchema,'quiz');