Knex.js-TypeError:db(...)。return(...)。insert不是函数

时间:2018-11-21 23:05:58

标签: node.js express knex.js

我收到错误消息: TypeError:db(...)。return(...)。insert不是函数

出于某种原因,代码运行'db.select('*')'没问题,但是到了

'db('courses')
  .return('*')
  .insert({'

它给出错误:TypeError:db(...)。return(...)。insert不是函数。

我不知道发生了什么,我已经坚持了4个小时。

我的代码示例:

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const knex = require('knex');


const db = knex({
  client:'pg',
  connection:{
    host:'127.0.0.1',
    port:'5432',
    user:'postgres',
    password:'',
    database:'YouList'
  }
})


const app = express();

app.use(bodyParser.json());
app.use(cors())

db.select('*').from('users').then(data => {
  console.log(data,'oia a data ai');
});

/*testando sem API*/ 
db('courses')
  .return('*')
  .insert({
    title: "o grande curso",
    description : "uma introducao aos ventos do leste",
    user_id : 78,
    urlimage : "https://i.imgur.com/TiavcG9.jpg",
    created : new Date()
  })
  .then(console.log)
  .then(user => {
    res.json(user[0]);
  })
.catch(err => res.status(400).json('unable to register'))

1 个答案:

答案 0 :(得分:2)

您正在呼叫return,而不是returning。您还应该将其链接到insert上,而不是之前拥有它。使其更加惯用。

所以只需将其切换...

db('courses')      
  .insert({
    foo: 'bar'
  })
  .returning('*')