JSON 在 CouchDB 中的异常行为
JSON in CouchDB stange behavior
我已经在 CouchDB 中使用这样的测试代码创建了更新处理程序(在插入 Couch 之前我正在删除换行符):
function (doc, req) {
if (req['userCtx']['roles'].indexOf('editor') < 0) {
return [null, 'Access denied'];
}
if (!doc) {
if (/*!('_id' in req) &&*/ !req['_id'] /*&& 'title' in req['body']*/ && !!req['body']['title'] /*&& 'content' in req['body']*/ && !!req['body']['content']) {
return [{ 'title': req['body']['title'], 'content': req['body']['content'], 'date': new Date(), 'edited_by': req['userCtx']['name'] }, 'Created' + toJSON(req)];
}
return [null, 'Empty' + toJSON({ 'no_id': !req['_id'], 'title': !!req['body']['title'], 'content': !!req.body['\"content\"'], 'body':req.body })];
}
doc['date'] = new Date();
doc['edited_by'] = req['userCtx']['name'];
return [doc, 'Edited' + toJSON(doc)];
}
Angular 在 POST 调用中发送数据
{"title":"test","content":"test"}
在 return 我得到
Empty{"no_id":true,"title":false,"content":false,"body":"{\"title\":\"test\",\"content\":\"test\"}"}
怎么了?为什么它不想看到接收到的对象不在直接 a.b
中,不在散列 a['b']
中,甚至不在转义 a['\"b\"']
中?我希望那是我的错,而不是沙发的错。怎么做才对?
您必须先将正文解析为 JSON...
按照此处所述使用 body-parser:https://scotch.io/bar-talk/expressjs-4-0-new-features-and-upgrading-from-3-0
我已经在 CouchDB 中使用这样的测试代码创建了更新处理程序(在插入 Couch 之前我正在删除换行符):
function (doc, req) {
if (req['userCtx']['roles'].indexOf('editor') < 0) {
return [null, 'Access denied'];
}
if (!doc) {
if (/*!('_id' in req) &&*/ !req['_id'] /*&& 'title' in req['body']*/ && !!req['body']['title'] /*&& 'content' in req['body']*/ && !!req['body']['content']) {
return [{ 'title': req['body']['title'], 'content': req['body']['content'], 'date': new Date(), 'edited_by': req['userCtx']['name'] }, 'Created' + toJSON(req)];
}
return [null, 'Empty' + toJSON({ 'no_id': !req['_id'], 'title': !!req['body']['title'], 'content': !!req.body['\"content\"'], 'body':req.body })];
}
doc['date'] = new Date();
doc['edited_by'] = req['userCtx']['name'];
return [doc, 'Edited' + toJSON(doc)];
}
Angular 在 POST 调用中发送数据
{"title":"test","content":"test"}
在 return 我得到
Empty{"no_id":true,"title":false,"content":false,"body":"{\"title\":\"test\",\"content\":\"test\"}"}
怎么了?为什么它不想看到接收到的对象不在直接 a.b
中,不在散列 a['b']
中,甚至不在转义 a['\"b\"']
中?我希望那是我的错,而不是沙发的错。怎么做才对?
您必须先将正文解析为 JSON...
按照此处所述使用 body-parser:https://scotch.io/bar-talk/expressjs-4-0-new-features-and-upgrading-from-3-0