0
嗨,为什么我得到重复输入错误。如果文档在数据库中,我会事先检查。我的模型需要idName
的唯一性。我从JSON数组中加载数据,prooven只是假的,没有真正的条目。MongoDb重复输入错误
async.map recipe.zutaten,
(ingredient, cb) ->
#Save all ingredients
ingredient.idName = ingredient.name.replace(/[^a-zA-Z0-9]+/gi, "").toLowerCase()
ingredientModel.find({ idName: ingredient.idName }, (err, ingredientFound) ->
return next err if err
ingredientsJson = {"idName":ingredient.idName, "name":ingredient.name, "amount":ingredient.amount}
#if found just pass it to recipes
if ingredientFound? && ingredientFound.length > 0
ingredientsJson.prooven = true
return cb null, ingredientsJson
#if not found evaluate if to save
else
#if not prooven just add the json to recipes
if(ingredient.prooven? && ingredient.prooven == false)
ingredientsJson.prooven = false
return cb null, ingredientsJson
#if prooven save it into database
else
ingredientDBObject = new ingredientModel()
ingredientDBObject.name = ingredient.name
ingredientDBObject.idName = ingredient.idName
ingredientDBObject.save((err) ->
return cb err if err
ingredientsJson.prooven = true
return cb null, ingredientsJson
)
)
...
错误
{ [MongoError: insertDocument :: caused by :: 11000 E11000 duplicate key error index: database.ingredients.$idName_1 dup key: { : "zitronensaft" }]
name: 'MongoError',
message: 'insertDocument :: caused by :: 11000 E11000 duplicate key error index: database.ingredients.$idName_1 dup key: { : "zitronensaft" }',
index: 0,
code: 11000,
errmsg: 'insertDocument :: caused by :: 11000 E11000 duplicate key error index: database.ingredients.$idName_1 dup key: { : "zitronensaft" }' }
我想这个问题是关系找到的异步特性。即使cb尚未返回,异步也会遍历配料。我已经在find函数中移动了'ingredient.idName = ingredient.name.replace(/ [^ a-zA-Z0-9] +/gi,“”).toLowerCase()'。 – 2015-04-01 18:41:39