試用了Sails.js,我正在編寫一個應用程序,它從第三方API導入數據並保存到MySQL表中。基本上我試圖將數據同步到我的應用程序進行進一步分析,更新我的記錄或根據需要創建新記錄。Sails.js模型 - 插入或更新記錄
我已經瀏覽了Sails的API,我看到了查找,創建和更新記錄的方法,但沒有內置方法來根據情況插入/更新記錄。我忽略了一些東西,還是我需要自己實現這個?
如果我必須自己實現這個,有沒有人知道插入/更新的良好設計模式?
這是我覺得它可能看起來像......
_.each(importedRecords, function(record){
MyModel.find({id: record.id}).exec(function findCB(err, found){
if(found.length){
MyModel.update(record.id, task).exec(function(err, updated){
if(err) { //returns if an error has occured, ie id doesn't exist.
console.log(err);
} else {
console.log('Updated MyModel record '+updated[0].name);
}
});
}else{
MyModel.create(record).exec(function(err, created){
if(err) { //returns if an error has occured, ie invoice_id doesn't exist.
console.log(err);
} else {
console.log('Created client record '+created.name);
}
});
}
});
});
我是否在朝着正確的方向,或者是有一個更優雅的解決方案?
此外,我正在處理這個應用程序中的很多不同模型,這意味着要在我的每個模型中重新創建這個代碼塊。有沒有一種方法可以擴展基礎模型對象,爲所有模型添加此功能。
感謝, 約翰
感謝您的回覆。我在我的搜索中早些時候看到了這個函數,但是因爲我無法知道它是否找到或不得不創建記錄,所以我決定實現我想要的功能。如果找到的操作返回true,那麼我想用新數據更新記錄。 – 2014-09-24 19:59:50
不客氣。這聽起來像有用的功能。也許你應該爲水線提交增強票。 – 2014-09-25 05:58:05
FindOrCreate()的文檔鏈接已損壞,缺少爆炸聲。 http://sailsjs.org/#!/documentation/reference/waterline/models/findOrCreate.html – 2015-06-02 23:39:19