当我尝试在我的node / express应用程序中创建对象原型时,我遇到了一些问题。
我首先创建原型,如下所示:
Object.prototype.printObject = function () {
return console.log(this);
}
现在问题在于我调用此函数。例如,当我调用这样的函数时:
let request = {1:2}
request.printObject();
*//Logs {1:2}*
不会发生错误。然而,当我这样称呼函数时:
let request = req.body
request.printObject();
我的程序因错误而崩溃:TypeError: request.printObject is not a function
有没有人知道为什么会这样?
答案 0 :(得分:0)
如果你需要('身体解析器')?或者req.body未定义,你应该先这样做
var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
答案 1 :(得分:0)
尝试对任何Object进行原型设计,你可以创建一个像这样的中间件函数:
app.use(function (req, res, next) {
console.log('req');
//you could also add any function to req,even so thats not a common thing to do
req.printObject = function { ... }
next();
});
您的方法的问题可能是,在创建请求对象后将函数添加到Object原型中。(编辑:这是错误的,请参阅注释)
答案 2 :(得分:0)
您添加了' printObject' Object原型的方法。因此,如果req.body是对象,您应该能够调用该方法。
尝试使用console.log(typeof req.body)
检查req.body的类型,以验证它是否为对象。
如果不是,则应使用节点模块' body-parser'使用已解析的正文内容填充req.body
。
例如,您的服务器代码部分可能如下所示:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json()); // Data is being sent to the server in JSON format
app.post('/my/endpoint', function(req, res){
req.body.printObject();
});
'身体解析器'模块也支持其他格式。我以JSON为例。您可以在此处找到他们支持的所有内容:https://www.npmjs.com/package/body-parser