2017-03-26 28 views
0

我有點麻煩:我只是試圖在清理完成後將原始記錄列表插入到mongodb集合中。但我沒有收到任何來自insert方法的反饋。這是我的代碼:清理後無法將數據插入到mongo集合中

model.collection.remove((removeError, removeResult) => { 
    console.log('remove cb'); 
    model.collection.insert(seeds, (insertError, insertedRecords) => { 
    console.log('insert cb'); 
    }); 
}); 

其實我想用貓鼬API(模型是貓鼬模型),但在我的探索這個問題的辦法做到這一點,我想通了,本地驅動程序不執行此以及。

這就是我一直試圖用貓鼬包裝:

model.remove({}, (err, docs) => { 
    if (err) { 
     console.log('remove error'); 
    } else { 
     console.log('remove success'); 
     model.insertMany(seeds, (insertError, insertedRecords) => { 
      if (insertError) { 
       console.log('insert error'); 
      } else { 
       console.log('insert success'); 
      } 
     }); 
    } 
}); 

當我運行此腳本我看到「刪除成功」,這一切。如果我註釋掉移除過程則「插入成功」顯示

我的貓鼬模型是非常簡單的:

const schema = new Schema({ 
    name: {type: String, unique: true, index: true}, 
}); 

seeds變量:

export default [ 
{name: 'USA'}, 
{name: 'Germany'}, 
{name: 'France'}, ... 

請解釋我在哪裏,我錯了或者我不明白

UPD

我已經試過這個使用MongoClient,它的工作原理!

MongoClient.connect(url, function(err, db) { 
    const collection = db.collection('countries'); 
    collection.deleteMany({}, (err, r) => { 
     console.log('delete', err); 
     collection.insertMany(seeds, (err, r) => { 
      console.log('insert', err); 
      db.close(); 
      Country.find({}, function (err, res) { 
       console.log(res); 
      }); 
     }); 
    }); 
}); 

所以問題在於貓鼬。雖然其實我以爲{ModelName}.collection是本機驅動

回答

0

要清除你的困惑,這條線model.collection.remove((removeError, removeResult)是錯誤的。

用於去除語法是這樣的,db.collection.remove( <query>, <justOne> )

沒有查詢,但在這裏model.remove({}, (err, docs) => {你有查詢({}),這意味着全部刪除。

檢查此語句db.mycol.remove({'title':'MongoDB Overview'})這是查詢和刪除任何具有MongoDB概述標題的文檔的查詢。

這是否有任何意義?

+0

據我所知'刪除'方法從收集丟棄記錄,而不是收集本身 –

+0

檢查更新的答案。 – Remario

+0

我已經嘗試了兩種變體,結果是一樣的 –

相關問題