我正在学习使用node express和knexjs构建应用程序以连接到Postgresql数据库。当我发出发布请求时,会显示此警告消息。我尝试发布的数据不在数据库中。也许该应用程序以为我正在使用sqlite3?
sqlite不支持插入默认值。设置
useNullAsDefault
标志以隐藏此警告。 (请参阅文档http://knexjs.org/#Builder-insert)。
这是我的server.js。
const express = require('express');
const app = express();
const path = require('path');
const knex = require('knex');
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
const database = knex({
client: 'pg',
connection: {
host : '127.0.0.1',
user : 'xxxxxxx',
password : 'xxxxxxx',
database : 'xxxxxxxxdb'
}
});
app.use(express.static(__dirname + '/../public/'));
app.get('/add_athlete', function(req, res) {
res.sendFile('add_athlete.html', {root: path.resolve(__dirname + '/../public/templates')});
});
app.post('/add_athlete', function(req, res) {
knex('participants').insert({
participant_number: 1,
email: "test@gmail.com",
first_name: "test",
last_name: "again"
})
.then (function () {
res.json({success: true, message: "ok"})
})
});
app.listen(3000);
console.log('Running at port 3000');
答案 0 :(得分:0)
只需确保这个问题有答案。
如评论中所述,您可能要使用创建的数据库实例。
因此,您可能不希望使用knex('participants').insert...
来代替database('participants').insert...