2013-05-30 120 views
2

我嘗試使用SequelizeJS的「findOrCreate」函數,但它不起作用。查找或使用SequelizeJS創建

「創造」的變量是「不確定的」,所以我不知道爲什麼,因爲它是由SequelizeJS使用的變量...

for(var i = 0; i < tags.length; i++){ 
    global.db.Tag.findOrCreate({name: tags[i]}).success(function(tag, created){ 
     if(created){ 
      global.db.PostTag.create({ 
       PostId: id, 
       TagId: tag.id 
      }); 
     } 
    }); 
} 
+0

您使用的是哪個版本?我相信這個改變可能不會發布到npm,所以你可以嘗試使用github.com/sequelize/sequelize的最新版本嗎? –

回答

1

我有同樣的問題。從1.7.0-alpha2升級到2.0.0-alpha2解決了這個問題。 乾杯

2

對我來說,答案是改變了我的諾言解析器從。後來到.spread。這與Sequelize返回數據的格式有關。

for(var i = 0; i < tags.length; i++){ 
    global.db.Tag.findOrCreate({ 
     name: tags[i] 
    }).spread(function(tag, created){ 
     if(created){ 
      global.db.PostTag.create({ 
       PostId: id, 
       TagId: tag.id 
      }); 
     } 
    }); 
} 
+0

這是正確的。 '.spread'是處理findOrCreate的正確方法,任何人都會在這個問題上磕磕絆絆。 **來自sequelize文檔:** *「默認情況下,函數將返回兩個參數:結果數組和一個元數據對象,其中包含受影響的行數等等。使用.spread來訪問結果。」* http: //docs.sequelizejs.com/class/lib/sequelize.js~Sequelize.html – Matthew