我有一个使用IOS创建的简单应用程序,它是一个问卷应用程序。每当用户点击“播放”时,它将调用一个请求到node.js/express服务器。
技术上,用户点击答案后,它将转到下一个问题。
我不确定该使用哪种方法来获取问题/题目
- 一次性获取所有数据并呈现给用户 - 这是一个数组
- 随着用户进展到下一个问题,逐个获取数据 - 每次调用一个数据
API示例
// Fetch all the data at once
app.get(‘/api/questions’, (req, res, next) => {
Question.find({}, (err, questions) => {
res.json(questions);
});
});
// Fetch the data one by one
app.get('/api/questions/:id', (req, res, next) => {
Question.findOne({ _id: req.params.id }, (err, question) => {
res.json(question);
});
});
第一种方法的问题在于,假设有200个问题,mongodb一次获取所有问题可能会很慢,并且网络请求也可能很慢。
第二种方法的问题是,我无法想象如何实现这一点,因为每个问题都是独立的,触发下一个api调用就很奇怪,除非在问题mongodb中有一个计数器或级别。
仅为了清晰起见,这是Mongoose中的问题数据库设计。
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const QuestionSchema = new Schema({
question: String,
choice_1: String,
choice_2: String,
choice_3: String,
choice_4: String,
answer: String
});