2017-08-08 3 views
0

SequelizeでModel.createを呼び出した後、プレーンなローオブジェクトを受け取ることができるようにしたいのですが、作成されたオブジェクト自体、メタデータなどはありません。 {raw: true}のオプションと同じようにModel.findになります。 Setting all queries to raw = true sequelize、 なし、Model.create({name: 'test'}, {raw: true})は動作しません:Sequelize Model.createにraw = trueを設定します。

私はすでに、この答えを見てきました。

おかげ

+0

'model.toObject'関数を使用してください:[http://mongoosejs.com/docs/api.html#document_Document-toObject](http://mongoosejs.com/docs/api.html#document_Document-toObject) – alexmac

+0

ありがとうalexmac。それはmongooseのためですが、私は答えとして投稿した 'model.get'を続けるための同様のメソッドを見つけました。 thnx – Mon

答えて

1

ありがとうございました。私は解決策を見つけましたが、これは正確には私が探しているものではありませんが、うまくいきます。

sequelizeエンティティには、プレーンオブジェクトバージョンを返すための.get()メソッドがあります。だから、このようなものになる:

Model.create(modelObject) 
.then((resultEntity) => { 
    const dataObj = resultEntity.get({plain:true}) 
} 

このスレッドから来る:Sequelize, convert entity to plain object。 CharlesAの答えを探してください。

アレイを試したことはありませんが、結果の配列に問題がある場合は、そのコメントとその隣の答えを確認してください。 しかし、.create()はオブジェクトを返すだけなので、私のために働きます。とにかく.findAll()を使用している場合は、その方法で動作するので、このソリューションの代わりに{raw: true}オプションを使用する必要があります。

P.S.誰かがまだSequelize自体が大きなresultEntityオブジェクトを返さず、普通のデータオブジェクトだけを返す解決策を持っている人は、{raw: true}オプションのように(私はそれがまだ軽いと思うので)、我々は公開しています。

ありがとうございました。

関連する問題