【问题标题】:Attribute not submitting to MongoDB (MERN stack)属性未提交到 MongoDB(MERN 堆栈)
【发布时间】:2021-01-04 11:09:57
【问题描述】:

我正在开发一款评估学生代数 1 级别的应用。我正在尝试向数据库发送一个名为“answers”的字符串,但没有发送任何内容。我在下面展示了模型/模式,基本上每个提交都应该发送答案字符串(它最初是一个对象,但我无法得到Mongoose not persisting object的答案,所以我只是尝试一个字符串来看看它是否甚至提交一个字符串。用户和日期被提交到数据库,但甚至没有答案属性的条目。我已经看到如果我提交“2”发送的有效负载是 {“results”:“2 "} 所以请求正文中有一些内容。我从服务器返回的响应是 {} 所以我认为我没有正确解构道具或者可能无意中发送了一个对象。关于为什么没有答案属性的任何想法都提交给数据库?任何帮助都非常感谢!

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;

Algebra1.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);
   
  }
}

【问题讨论】:

    标签: node.js reactjs mongodb mongoose redux


    【解决方案1】:

    您正在使用results 键发送数据并以answer 键进行破坏。你在哪里发送任何反对答案键的东西?我猜你的意思是提交结果作为答案。

    const body = JSON.stringify({ answers: results });
    

    【讨论】:

    • 哇,我没有将道具更改为导致我的操作文件。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2022-08-07
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 2021-02-24
    • 2020-03-20
    相关资源
    最近更新 更多