我从我的表格中获取数据到我的mLab,但它的格式是我不喜欢的。它就像这样
{ '{"email":"ben@benjamin.com","message":"not what i want"}': '' }
更糟糕的是它保存了这个
"data": "{\"{\\\"email\\\":\\\"ben@benjamin.com\\\",\\\"message\\\":\\\"this is ridiculous\\\"}\":\"\"}"
因此它基本上将我的数据设置为关键。我使用将我的架构更改为对象,这样我就可以节省一些东西。理想情况下,我想要每个数据的密钥。我希望以后能够访问它。我无法让身体解析器工作,所以我使用express-formidable作为中间件。有很多移动部件,如果我改变周围的东西我崩溃服务器并得到错误,无论我做什么。好的,这里是双方的一些代码。
服务器代码:
var formSchema = new Schema({
data: Object
})
app.use(formidable());
app.post('/contact', function(req,res,next){
console.log(req.fields)
var item = JSON.stringify(req.fields)
var form = new Form({data: item
}).save(function(err,data){
if(err) throw err
if(data) res.json(data)
})
})
客户端代码
submitData(e){
e.preventDefault();
let email = this.state.value;
let msg = this.state.value2;
let data = {
email: email,
message: msg
}
fetch('/contact', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: JSON.stringify(data)
})
.then((response) => response.json())
.then((responseData) => {
console.log("Response:",responseData);
this.setState({
value: "",
value2: "",
status: "THANKS FOR CONTACTING ME I'LL BE IN TOUCH SOON"
})
}).catch((error) => {
console.log(error)
})
}
这让我疯了。理想情况下我想做得对。或以某种方式访问该对象并获取电子邮件和消息密钥,只需更改我的架构。然后我可以在我的新表格中指定键(...部分
答案 0 :(得分:0)
在一个奇怪的事件扭曲中我解决了它。这可能是最好的方式,但它有效。我仍然想知道我出错的地方。我看到了一个教程,其中表单数据很容易保存...从反应前端没有被授予...无论如何这就是我所做的
我的自定义解决方案
var formSchema = new Schema({
email: String,
message: String
})
app.use(urlencodedParser);
app.post('/contact', function(req,res,next){
var item = Object.keys(req.body)
var o = JSON.parse(item[0])
var e = o.email
var m = o.message
console.log(e)
//var item = JSON.stringify(req.fields)
var form = new Form({email: e,message: m
}).save(function(err,data){
if(err) throw err
if(data) res.json(data)
})
})
我从强大的方式切换回身体解析器,但无论哪种方式我都得到了那个奇怪的对象
我仍然不知道为什么我的数据对象是{'{'key':'value'}':''}
我认为我的问题出在服务器端......但也许这与我发送POST的方式有关。一个更聪明,更有经验的人很难找到:)