2016-07-31 69 views
2

我試圖創建新的過濾器並打印(console.log)剛剛創建的對象的id,但它不會輸入到.then函數中。 下面的代碼:Sequelize-創建instarnce後不返回承諾

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('***************************************'); 
}); 

和「**」沒有打印出來,但條目是在DB。

,當我試圖這樣做:

var filter = Filter.create({ name: data.filter_name }) 

和打印「過濾器」我已經得到了新實例created_at等,但id爲NULL。

的ID定義爲:

id: { 
    allowNull: false, 
    autoIncrement: true, 
    primaryKey: true, 
    type: Sequelize.INTEGER 
    }, 

請有人能幫助有什麼不對嗎?

謝謝!

+0

你確定Filter.create()返回一個承諾或至少一個可靠的對象嗎?如果是這樣,承諾可能剛剛返回被拒絕,所以你可能會嘗試添加第二個函數來捕獲拒絕的結果。 – Redu

+0

你的'新的FilterModel()'應該返回'Sequelize.define()'對象 –

+0

@TilekbekovYrysbek我已經在模型中定義了它。 – Zvi

回答

0

實際上,它進入'然後'並打印控制檯。

它繞過'然後'去到下一行,然後返回(承諾完成後),到'然後'功能。

我調試和

Filter.create({ name: data.filter_name }).then(function(filter) { 
console.log('***************************************'); 
}); 
console.log('after') 

後添加的console.log所以,現在,它 '後' 打印,然後打印 '******'

還是要謝謝你。