问题描述
我是用 knex 做的,前端是用 vue js 做的。一切正常,但帖子不起作用,当我在表单中放入某些内容时,它会出现重复条目 '1' 键 'PRIMARY' 我该如何解决这个问题?
我是用 knex 做的,前端是用 vue js 做的。一切正常,但帖子无效,当我将某些内容放入表单时,它会出现重复条目 '1' 键 'PRIMARY' 我该如何解决这个问题?
exports.up = function(knex) {
return knex.schema.createTable('series',function(table) {
table.increments('id').unsigned().primary()
table.string('text').notNullable()
table.enum('rating',['good','not bad','bad']).defaultTo('not bad')
table.string('comment').notNullable()
})
};
exports.down = function(knex) {
return knex.schema.dropTableIfExists('series')
};
前端
template>
<div class="Series">
<h2>Table</h2>
<table id="tabelle" border="1">
<!-- Header -->
<tr>
<th>text</th>
<th>rating</th>
<th>comment</th>
<th>action</th>
</tr>
<!-- series List -->
<tr v-for="series in series" :key="series.id">
<td> {{series.text}}</td>
<td>{{series.rating}}</td>
<td>{{series.comment}}</td>
<td><button @click="removeData(series.id)">Löschen</button></td>
</tr>
</table>
<input type="text" name="text" v-model="series.text"> <br>
<select name="rating" v-model="series.rating">
<option>good</option>
<option>not bad</option>
<option>bad</option>
</select><br>
<input type="text" name="comment" v-model="series.comment"> <br>
<button @click="postData" >Post</button>
</div>
</template>
<script>
import axios from 'axios';
export default {
name: 'Series',data() {
return {
series: {},}
},methods: {
getData(){
axios.get('/api/series').then((response) =>{
console.log(response.data);
this.series = response.data;
})
.catch((error) => {
console.log(error);
});
},postData(){
axios.post('/api/serie/create',this.series)
.then((result) => {
console.warn(result)
}).catch((error) => {
console.log(error);
});
},removeData(id){
axios.delete('/api/serie/delete/'+id).then(()=>{
this.getData();
})
}
},mounted() {
this.getData()
},}
</script>
端点
app.post('/api/serie/create',(req,res)=> {
console.log("create");
console.log(req.body);
let serie = req.body
knex('series').insert(serie)
.then(results => res.json(results))
.catch(err => {
console.error(err.sqlMessage)
res.status(500)
res.json(err.sqlMessage)
})
})
解决方法
这个错误告诉你每次你想在你的数据库中保存什么,主键是重复的,因为你的“主键列”没有增加。检查您的“主键列”是否自动递增。如果不是,或修改为自动递增或手动递增。