Sequelize-创建实例后不返回承诺
Posted
技术标签:
【中文标题】Sequelize-创建实例后不返回承诺【英文标题】:Sequelize- Not return promise after create an instarnce 【发布时间】:2016-12-05 16:24:58 【问题描述】:我正在尝试创建新过滤器并打印 (console.log) 刚刚创建的对象的 id,但它没有进入 .then 函数。 代码如下:
var Sequelize = require('sequelize');
var FilterModel = require('../models/filters');
var Filter = new FilterModel(Database, Sequelize);
Filter.create( name: data.filter_name ).then(function(filter)
console.log( '***************************************' );
);
并且'**'没有打印,但条目在数据库中。
当我尝试这样做时:
var filter = Filter.create( name: data.filter_name )
并打印“过滤器”,我得到了带有 created_at 等的新实例,但 id 为 NULL。
id定义为:
id:
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
,
请有人帮忙看看这里出了什么问题?
谢谢!
【问题讨论】:
你确定 Filter.create() 返回一个 promise 或者至少是一个 thenable 对象吗?如果是这样,promise 可能刚刚返回被拒绝,因此您可以尝试添加第二个函数来捕获拒绝的结果。 你的new FilterModel()
应该返回 Sequelize.define()
对象
@TilekbekovYrysbek 我已经在模型中定义了。
【参考方案1】:
其实就是输入到'then'并打印控制台。
它绕过 'then' 转到下一行,然后返回(在 promise 完成后),返回 'then' 函数。
我调试它并在之后添加了console.log
Filter.create( name: data.filter_name ).then(function(filter)
console.log( '***************************************' );
);
console.log('after')
所以现在,它打印 'after' 然后打印'******'
还是谢谢。
【讨论】:
这段代码与您的问题有何不同?以上是关于Sequelize-创建实例后不返回承诺的主要内容,如果未能解决你的问题,请参考以下文章
使用 Typescript 在 Sequelize 模型中创建实例方法
在 Express.js 中停止执行 Sequelize 承诺