我正在用纯 Node js 编写一个查询控制器。为什么控制台会出现“response.status is not function”错误?
const Admins = require('../models/admins')
const Films = require('../models/films')
const Categories = require('../models/categories')
module.exports = function requestController(request, response){
if(request.method === 'GET' && request === '/admins/all'){
Admins.findAll()
.then(()=>{
response.status(200).json()
})
}else{
console.log(response)
response.status(400).json()
}
}
我尝试更改名称并在控制台中显示响应。响应实际上没有状态功能。
创建服务器并调用主控制器的功能
const db = require('./base');
const http = require('http');
const port = 3500;
const Sequelize = require('sequelize');
const requestController = require('./controllers/main-controller');
http.createServer(function(request, response){
console.clear();
console.log('=================================');
console.log('|| SERVER WORKED ||');
console.log('=================================');
requestController(request,response);
response.end('Server Ready');
}).listen(port);
您在本机http中使用表达语法,因此它没有
status
或 json
函数。
您可以使用 end
、writeHead
、statusCode
来代替。
参考此DOC
module.exports = function requestController(request, response){
if(request.method === 'GET' && request === '/admins/all'){
Admins.findAll()
.then(()=>{
response.writeHead(200,{
"content-type":"application/json"
});
const data = { /** your data */
user: "test"
}
const result = JSON.stringify(data); /** You have to stringify before sent it to response */
response.end(result)
})
}else{
console.log(response)
response.statusCode = 400;
response.end("Something went wrong")
}
}