我正在开发一个评估学生代数1水平的应用程序。我试图将一个名为“Answers”的字符串发送到数据库,但是什么也没有发送。我在下面展示了模型/模式,基本上每个提交都应该发送答案字符串(它最初是一个对象,但是我无法获得Mongoose非持久化对象的答案,所以我只是尝试一个字符串,看看它是否提交了一个字符串。用户和日期被提交到数据库,但甚至没有一个用于answers属性的条目。我已经看到,如果我提交“2”,发送的有效负载是{“results”:“2”},所以请求主体中有一些东西。我从服务器返回的响应是{},所以我认为我没有正确地销毁一个道具,或者可能是无意中发送了一个对象。关于为什么没有answers属性被提交到数据库有什么想法吗?如有任何帮助,不胜感激!
api/algebra1.js(发送测试结果的路由)
const express = require('express');
const router = express.Router();
var bodyParser = require('body-parser')
const bcrypt = require('bcryptjs');
const algebra1 = require('../../models/Algebra1');
const jwt = require('jsonwebtoken');
const config = require('config');
const auth = require('../../middleware/auth');
//@route POST api/auth
//@desc Algebra 1 route
//@access Private
var jsonParser = bodyParser.json();
router.post('/', [jsonParser, auth], async (req, res) => {
const { answers } = req.body;
try {
let newTest = new algebra1({
answers: answers,
user: req.user.id,
date: Date.now()
})
console.log("body is " + req.body)
await newTest.save();
res.json({ answers: answers });
} catch (err) {
console.error(err.message);
res.status(500).send('Server error');
}
})
module.exports = router;
代数1.js(猫鼬模型):
const mongoose = require('mongoose');
const Algebra1Schema = new mongoose.Schema({
answers: {
type: String
},
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'user'
},
date: {
type: Date,
default: Date.now
}
})
module.exports = algebra1 = mongoose.model('algebra1', Algebra1Schema)
提交操作(将结果提交到API/Algebra1路由):
export const submit = (results) => async dispatch => {
try {
const config = {
headers: {
'Content-Type': 'application/json'
}
}
console.log(results);
const body = JSON.stringify({ results });
const res = await axios.post('/api/algebra1', body, config);
dispatch({
type: QuestionActionTypes.RESET
})
dispatch(setAlert('You\;ve finished your assessment!', 'success'));
} catch (err) {
console.error(err.message);
}
}
您正在使用results
键发送数据,并以answer
键进行析构。你要把任何反对应答键的东西发到哪里去?我猜你是想把结果作为答案来提交。
const body = JSON.stringify({ results });