Nœud + Sequelize: Comment faire pour vérifier si l'élément existe avant de l'ajouter? (async confusion)

Je suis malheureusement de nouveau à nœud et en cours d'exécution dans une certaine confusion quant à l'asynchrone/synchrone de l'exécution du nœud.

Je suis l'aide d'un noeud, sequelize avec sqlite et async.js.

J'ai une série de Articles, dont chacune a un certain nombre de Authors.

Pour chaque Authors dans chaque Article, je voudrais vérifier si le Author existe. Si pas, créez-la.

Le problème est que, sur le premier cycle, en double auteurs sont en cours de création, je suppose en raison asynchrone fonctionnalité causant un problème avec la vérification de l'existence.

Par exemple, avec le tableau: authors = ['A. Test', 'B. Test', 'C. Test', 'A. Test']

et le code:

async.each(authors, function(item, callback){
    Author.sync().then(function(){
      Author.count({ where: {name: item.trim()} }).then(function(count){
        if (count != 0) {
          console.log('Author already exists')
        } else {
          console.log('Creating author...')
          Author.create({
            name: item.trim()
          })
        }
      })
    })
  })

Sur le premier run, permettra de créer une table:

ID | name
------------
0  | A. Test
1  | B. Test
2  | C. Test
3  | A. Test

Ce que je fais mal? J'ai l'impression de manquer un concept fondamental de vs asynchrone synchrone de l'exécution du Nœud.

(J'ai aussi essayé asynchrone.eachSeries qui est censé exécuter en série plutôt qu'en parallèle?)

Edit: Légèrement remaniée, mais encore la création de doublons

async.eachSeries(authors, function(authorName, callback){
    Author.findOne({ where: {name: authorName.trim()} }).
    then(function(author){
      if (author) {
        //Author exists...
        callback()
      } else {
        //Author does not exist...
        Author.create({
          name: authorName.trim()
        }).then(function(author){
          callback()
        })
      }
    })
  })

OriginalL'auteur waffl | 2015-08-04