2016-07-31 25 views
2

Ich versuche, neue Filter erstellen und drucken (console.log) die ID des gerade erstellten Objekts, aber es nicht in die .then-Funktion eingeben. Hier ist der Code:Sequelize- Keine Rückgabeversprechen nach dem Erstellen eines Instance

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

Und die '**' nicht gedruckt, aber der Eintrag in der DB.

Als ich versuchte, wie dies zu tun:

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

Und print ‚Filter‘ Ich habe die neue Instanz mit dem created_at usw. bekam aber die ID ist NULL.

Die id wie folgt definiert:

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

Bitte jemand helfen kann, was hier los?

Danke!

+0

Sind Sie sicher, dass Filter.create() ein Versprechen oder mindestens ein aktuelles Objekt zurückgibt? Wenn dies der Fall ist, wurde das Versprechen möglicherweise zurückgewiesen, sodass Sie versuchen könnten, eine zweite Funktion hinzuzufügen, um das Ergebnis der Ablehnung abzufangen. – Redu

+0

Ihr 'new FilterModel()' sollte 'Sequelize.define()' Objekt zurückgeben –

+0

@TilekbekovYrysbek Ich definiere es bereits im Modell. – Zvi

Antwort

0

Eigentlich ist es auf dem "dann" eingeben und drucken Sie die Konsole.

Es umgehen die "dann" gehen Sie zu den nächsten Zeilen und dann zurück (nach dem Versprechen abgeschlossen), um die "dann" -Funktion.

ich debuggen es und hinzugefügt console.log nach

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

So, jetzt, druckt es 'nach' und dann drucken '******'

Danke trotzdem.