Javascript 列“中的空值”;电邮;违反非空约束
我得到了以下错误(错误日志),我找到了一些解决方案并尝试了它们,但没有一个是有效的。如果你能帮我做这件事就太好了Javascript 列“中的空值”;电邮;违反非空约束,javascript,postgresql,express,Javascript,Postgresql,Express,我得到了以下错误(错误日志),我找到了一些解决方案并尝试了它们,但没有一个是有效的。如果你能帮我做这件事就太好了 index.js: require('dotenv').config(); const express = require('express'); const bodyParser = require('body-parser') const cors = require('cors'); const adminGate = require('./admin') const app
index.js
:
require('dotenv').config();
const express = require('express');
const bodyParser = require('body-parser')
const cors = require('cors');
const adminGate = require('./admin')
const app = express();
const port = process.env.PORT;
const host = process.env.HOST;
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.use(cors())
app.get('/', (req, res)=>{
res.send("NODE SERVER IS UP AND RUNNING");
});
// routing
app.post('/create_user', adminGate.createUser);
app.listen(port,()=>{
console.table(`SERVER IS RUNNING ON PORT:${port}!`);
console.table(`CHECK: http://${host}:${port}`)
});
const Pool = require('pg').Pool
const pool = new Pool({
user: 'postgres',
host: 'localhost',
database: '##########',
password: '##########',
port: 5432,
});
const createUser = (request, response) => {
const {email, username, password} = request.params // || request.body none of them is working.
pool.query('INSERT INTO users(email, username, password) VALUES($1,$2,$3)',[email, username, password], (error, results) => {
if (error) {
throw error
}
response.status(201).json({status: 'success', message: 'User added.'})
})
}
module.exports ={createUser}
admin.js
:
require('dotenv').config();
const express = require('express');
const bodyParser = require('body-parser')
const cors = require('cors');
const adminGate = require('./admin')
const app = express();
const port = process.env.PORT;
const host = process.env.HOST;
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.use(cors())
app.get('/', (req, res)=>{
res.send("NODE SERVER IS UP AND RUNNING");
});
// routing
app.post('/create_user', adminGate.createUser);
app.listen(port,()=>{
console.table(`SERVER IS RUNNING ON PORT:${port}!`);
console.table(`CHECK: http://${host}:${port}`)
});
const Pool = require('pg').Pool
const pool = new Pool({
user: 'postgres',
host: 'localhost',
database: '##########',
password: '##########',
port: 5432,
});
const createUser = (request, response) => {
const {email, username, password} = request.params // || request.body none of them is working.
pool.query('INSERT INTO users(email, username, password) VALUES($1,$2,$3)',[email, username, password], (error, results) => {
if (error) {
throw error
}
response.status(201).json({status: 'success', message: 'User added.'})
})
}
module.exports ={createUser}
错误日志
:
SERVER IS RUNNING ON PORT:3000!
CHECK: http://localhost:3000
/Users/pouya/src/admin.js:26
throw error
^
error: null value in column "email" violates not-null constraint
at Parser.parseErrorMessage (/Users/pouya/node_modules/pg-protocol/dist/parser.js:278:15)
at Parser.handlePacket (/Users/pouya/node_modules/pg-protocol/dist/parser.js:126:29)
at Parser.parse (/Users/pouya/node_modules/pg-protocol/dist/parser.js:39:38)
at Socket.<anonymous> (/Users/pouya/pg-protocol/dist/index.js:8:42)
at Socket.emit (events.js:315:20)
at addChunk (_stream_readable.js:302:12)
at readableAddChunk (_stream_readable.js:278:9)
at Socket.Readable.push (_stream_readable.js:217:10)
at TCP.onStreamRead (internal/stream_base_commons.js:186:23) {
length: 184,
severity: 'ERROR',
code: '23502',
detail: 'Failing row contains (null, null, null).',
hint: undefined,
position: undefined,
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: 'public',
table: 'users',
column: 'email',
dataType: undefined,
constraint: undefined,
file: 'execMain.c',
line: '1974',
routine: 'ExecConstraints'
}
服务器正在端口3000上运行!
检查:http://localhost:3000
/Users/pouya/src/admin.js:26
抛出错误
^
错误:“电子邮件”列中的null值违反了NOTNULL约束
在Parser.parseErrorMessage(/Users/pouya/node_modules/pg protocol/dist/Parser.js:278:15)
位于Parser.handlePacket(/Users/pouya/node_modules/pg protocol/dist/Parser.js:126:29)
在Parser.parse(/Users/pouya/node_modules/pg protocol/dist/Parser.js:39:38)
在插座上。(/Users/pouya/pg protocol/dist/index.js:8:42)
在Socket.emit(events.js:315:20)
在addChunk(_stream_readable.js:302:12)
在readableAddChunk(_stream_readable.js:278:9)
在Socket.Readable.push(_stream_Readable.js:217:10)
在TCP.onStreamRead(internal/stream_base_commons.js:186:23){
长度:184,
严重性:“错误”,
代码:“23502”,
详细信息:“失败的行包含(null,null,null)。”,
提示:未定义,
位置:未定义,
内部位置:未定义,
internalQuery:未定义,
其中:未定义,
架构:“公共”,
表:“用户”,
专栏:“电子邮件”,
数据类型:未定义,
约束:未定义,
文件:“execMain.c”,
行:“1974年”,
例行程序:“执行约束”
}
您必须传递请求和响应,因为createUser需要这两个参数
app.post('/create_user',(req, res) => {
adminGate.createUser(req, res);
});
在createUser函数中
const {email, username, password} = request.query
谢谢你的回答,但它不起作用,因为它说,
响应没有定义
!我已经编辑了答案,试试那个。当您发出POST请求时,您可以访问该请求及其响应。由于您从createUser func中的请求中获得电子邮件等,因此您可以传递这些请求和响应。列“email”中的null值违反了非null约束
仍会收到此错误!你试过request.query吗?看来你已经试过了。另外,值得检查createUser函数中的请求对象,看看您得到了什么。它现在正在工作,请编辑答案,其余的我会做,谢谢!