node.js - 请求成功,但是表单提交的字段数据没有提交到数据库中?
问题描述
每当我提交表单时,唯一添加到数组中的是 objectId 而不是我在表单中拥有的字段。
为了更清楚:
Thefaq
是 blogSchema 中的一个数组,如下所示:
faq:[
{
ques:{
type:String
},
ans:{
type:String
}
}
]
在来自前端的每个提交请求上,一个常见问题解答应使用 和 添加到数组ques
中ans
。但是在提交请求时,faq 中唯一添加的是 objectId。
put请求的后端代码是:
exports.createFaq=async (req,res)=>{
const slug=req.params.slug.toLowerCase()
const {ques,ans}=req.body
const newFaq={ques,ans}
try {
const material= await Material.findOne({slug})
material.faq.unshift(newFaq);
await material.save();
res.json(material)
} catch (err) {
console.error(err.message);
res.status(500).send('server error')
}
}
表单的前端代码是
import React,{useState,useEffect} from 'react'
import { withRouter } from 'next/router';
import { getCookie} from '../../../actions/auth';
import {createFaqs} from '../../../actions/material'
const AddFaq = ({router}) => {
const [formData,setFormData]=useState({
ques:'',
ans:''
});
const token = getCookie('token');
const {ques,ans}=formData
const submit = e => {
const slug=router.query.slug
e.preventDefault();
createFaqs(formData, token,slug).then(data => {
if (data.error) {
setFormData({ ...formData, error: data.error });
} else {
setFormData({ ...formData, ques:'',ans:'', error: '', success: `Faq added to blog titled is created` });
}
});
};
const handleChange=e=>setFormData({...formData,[e.target.name]:e.target.value});
return (
<>
<section className="container">
<h1 className="large">
Create faq for the blog
</h1>
<div className="my-1">
<form className='form' onSubmit={submit}>
<div className="form-group">
<input type="text" name='ques' value={ques} onChange={e=>handleChange(e)} />
</div>
<div className="form-group">
<input type="text" name='ans' value={ans} onChange={e=>handleChange(e)} />
</div>
<button type="submit" className="btn nbtn btn-dark my-1">Publish</button>
</form>
</div>
</section>
</>
)
}
export default withRouter(AddFaq);
如果您对此有所了解,请提供帮助。非常感谢
createFaq
是调用 api 的函数formData
,token
用于身份验证和slug
我们要添加的博客的常见问题解答
解决方案
推荐阅读
- java - 通过“java -jar”运行可执行 JAR 时“找不到或加载主类”
- python - 正则表达式 remove_punctuation,但保留 AT 单(双)大写 - 字符点
- vue.js - Vue:从父级获取数据
- express - 使用 Nginx 作为 Express 和 NuxtJs 的反向代理刷新页面很长时间
- laravel - 将 Laravel 5.8 升级到 6.2 后 SQLite 迁移出错
- javascript - if 和 else if 语句被忽略,Javascript
- oracle-apex - Oracle APEX - 具有多个父项的面包屑条目
- javascript - 从外部 HTML 文件调用 javascript 函数
- c# - 什么是 kafka 中的本地值序列化错误?
- docker - 我可以回滚到以前版本的 Docker Desktop 吗?