我創建了一個函數來將數據保存到下面的邏輯中的mongoDB,但我真的很難重構代碼並使其更清潔,有太多令人討厭的代碼重複,我該怎麼辦DRY原則?用貓鼬保存數組數據的清潔代碼
邏輯: 1.傳遞一個標誌來決定在結束時是否關閉數據庫連接。 2.根據傳入的returnedArray
創建不同的mongoDB模型並保存到數據庫中。
var saveArrayToDB = function(returnedArray, flagToCloseDBConnection) {
var objectToSave,
object,
type = returnedArray[0].type,
arrayToSave = [];
if (type === 'user') {
for (var i = 0; i < returnedArray.length; i++) {
object = returnedArray[i];
objectToSave = new User({
fullName: object['full_name'],
activatedAt: object['activated_at'],
location: object['location'],
timezone: object['timezone'],
imageURL: object['mugshot_url'],
stats: object['stats']
});
arrayToSave.push(objectToSave);
}
User.create(arrayToSave, function(err) {
if (err) {
console.log('err ' + err);
}
if(flagToCloseDBConnection) {
mongoose.connection.close();
}
});
} else if (type === 'group') {
for (var j = 0; j < returnedArray.length; j++) {
object = returnedArray[j];
objectToSave = new Group({
fullName: object['full_name'],
createdAt: object['created_at'],
stats: object['stats'],
url: object['web_url']
});
arrayToSave.push(objectToSave);
}
Group.create(arrayToSave, function(err) {
if (err) {
console.log('err ' + err);
}
if(flagToCloseDBConnection) {
mongoose.connection.close();
}
});
} else {
objectToSave = null;
console.log('ERROR: unrecognized type in data. Not saved.');
}
};
優雅的代碼!我知道'map()',但是沒有足夠熟練地使用它,就像你在這裏做的那樣靈活。 此代碼不是Web服務器的一部分,它是由管理員在後臺運行以定期刷新數據。一旦數據刷新,數據庫連接應該關閉。 我將此標記爲解決方案 –
@XiXiao謝謝。至少它的可讀性和您的使用情況,那麼您應該能夠適當地添加連接關閉邏輯。 – chridam