Knex: 有关在Knex.js和Postgres中使用then()的问题

创建于 2014-01-16  ·  3评论  ·  资料来源: knex/knex

我试图使用then()链接我的创建表和行插入。
该表已创建,但没有插入发生(未捕获任何错误)。
有人可以告诉我我错了吗?

谢谢
MN

var Promise = require('bluebird');
var Knex = require('knex');
Knex.knex = Knex.initialize({
客户:“ pg”,
连接:{

},
调试:true
});
var knex = require('knex')。knex;
knex.schema.createTable('department',function(table){
table.increments('department_id')。primary()。notNullable();
table.string('部门名称',80).unique()。notNullable();
table.string('building_name',40);
})。then(function(){
console.log('部门表已创建');
knex('部门').insert(
[{department_name:'Nano Technology',building_name:'block-A'},
{department_name:“机械工程”,building_name:“ block-C”}],
'department_id'
);
})。then(function(){
console.log('已插入部门');
})。catch(function(e){
console.log(e);
});

question

最有用的评论

您必须returnknex插入语句,或向其中添加处理程序(使用thencatch / caught ),否则,您只是在创建builder实例,但实际上并未执行查询。 当您调用insertselectfrom等方法时(基本上是查询生成器上的每个方法),它只会修改其内部状态,而不会真正执行查询。 仅当您使用thencatch / caughtlastly / finally ,向实例添加一个或多个处理程序时,才会发生这种情况。 tapexec ,因为这将创建实际的Promise ,它将查询发送到数据库客户端。

所有3条评论

您必须returnknex插入语句,或向其中添加处理程序(使用thencatch / caught ),否则,您只是在创建builder实例,但实际上并未执行查询。 当您调用insertselectfrom等方法时(基本上是查询生成器上的每个方法),它只会修改其内部状态,而不会真正执行查询。 仅当您使用thencatch / caughtlastly / finally ,向实例添加一个或多个处理程序时,才会发生这种情况。 tapexec ,因为这将创建实际的Promise ,它将查询发送到数据库客户端。

Knex和书架很棒。 非常感谢

  • MN

2014年1月16日,13:17,Johannes Lumpe [email protected]写道:

您必须返回您的knex插入语句,或向其添加处理程序(通过使用then或catch / catch),否则,您只是在创建构建器实例,而实际上并未执行查询。 当您调用诸如insert之类的方法时,请选择frometc。 -基本上是查询生成器上的每个方法-它只会修改其内部状态,而不会实际执行查询。 只有在您使用then,catch / catch,last / finally,tap或exec将一个或多个处理程序添加到实例时,才会发生这种情况,因为这将创建实际的Promise,并将查询发送到数据库客户端。

-
直接回复此电子邮件或在GitHub上查看。

别客气!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mishitpatel picture mishitpatel  ·  3评论

hyperh picture hyperh  ·  3评论

marianomerlo picture marianomerlo  ·  3评论

lanceschi picture lanceschi  ·  3评论

arconus picture arconus  ·  3评论