【发布时间】:2014-05-21 05:36:07
【问题描述】:
我正在努力:
$.ajax({
type:"POST",
url:"/psychos",
data:JSON.stringify(this.psycho)
})
在服务器上我得到了:
app.post("/psychos", function(request, response) {
var psychologist = request.body.psycho
console.log(psychologist)
psicologosCollection.insert(psychologist, function(error, responseFromDB) {
if (error) {response.send(responseFromDB)}
console.log("Se ha insertado: "+ JSON.strinfigy(responseFromDB))
response.send(responseFromDB)
})
})
但是,console.log() 正在打印 undefined 并得到以下结果:
TypeError: Cannot read property '_id' of undefined
at insertWithWriteCommands (/home/diegoaguilar/DigitalOcean/psicologostuxtepec/node_modules/mongodb/lib/mongodb/collection/core.js:78:13)
at Collection.insert (/home/diegoaguilar/DigitalOcean/psicologostuxtepec/node_modules/mongodb/lib/mongodb/collection/core.js:30:7)
at Object.handle (/home/diegoaguilar/DigitalOcean/psicologostuxtepec/server.js:117:25)
at next_layer (/home/diegoaguilar/DigitalOcean/psicologostuxtepec/node_modules/express/lib/router/route.js:103:13)
at Route.dispatch (/home/diegoaguilar/DigitalOcean/psicologostuxtepec/node_modules/express/lib/router/route.js:107:5)
at c (/home/diegoaguilar/DigitalOcean/psicologostuxtepec/node_modules/express/lib/router/index.js:195:24)
at Function.proto.process_params (/home/diegoaguilar/DigitalOcean/psicologostuxtepec/node_modules/express/lib/router/index.js:251:12)
at next (/home/diegoaguilar/DigitalOcean/psicologostuxtepec/node_modules/express/lib/router/index.js:189:19)
at next (/home/diegoaguilar/DigitalOcean/psicologostuxtepec/node_modules/express/lib/router/index.js:166:38)
at Layer.session [as handle] (/home/diegoaguilar/DigitalOcean/psicologostuxtepec/node_modules/express-session/index.js:98:29)
我之前使用的是BodyParser:
var bodyParser = require('body-parser')
app.use(bodyParser())
psycho 实际上是一个有效的现有对象。在执行 AJAX 的方法中,console.log(this.psycho) 将打印我的对象。我做错了什么?
编辑:
即使我发现我应该得到:
var psychologist = request.body.psycho
在服务器 GET 路由代码中,我无法理解 bodyParser 是如何生成 Object 的?
对于我之前尝试过的非常相似的 AJAX 调用:
function getSendingJSON(url,reqObject,callBack) {
$.ajax({
type: "get",
data: reqObject,
dataType: "json",
url: url,
success: function(response){
callBack(response);
}
});
}
所以响应是一个 JSON,回调函数看起来类似于:
function plotReglaFalsa(respuesta) {
if (respuesta.fail) {...}
else if (respuesta.negative) {...}
....
}
即使这纯粹是在客户端,我也很困惑如何处理 Objects/JSON 序列化以及 bodyParser 如何为它工作。
【问题讨论】:
-
那么
console.log( JSON.stringify(psycologist) )会产生什么(甚至更好)呢?你也应该在你的$ajax请求中这样做,以序列化data: JSON.stringify( this.psycho ) -
我也越来越不确定了。
标签: javascript node.js ajax mongodb