我試圖在我的StrongLoop服務器中創建功能字段。所以基本上客戶端會發送一個名爲「datas」的字段(數據庫中不可用)的數據,我將在「保存」Observer鉤子並執行自定義處理並保存到名爲「processed_datas_1」和「processed_datas_2」的數據庫字段(這兩個字段在數據庫中可用)。定義具有數據庫中不存在的功能字段的模型
當我嘗試獲取記錄時出現錯誤 - 列「數據」不存在。如何定義數據庫中不存在的字段。 它僅用作吸氣和填塞劑領域。
TIA:d
我試圖在我的StrongLoop服務器中創建功能字段。所以基本上客戶端會發送一個名爲「datas」的字段(數據庫中不可用)的數據,我將在「保存」Observer鉤子並執行自定義處理並保存到名爲「processed_datas_1」和「processed_datas_2」的數據庫字段(這兩個字段在數據庫中可用)。定義具有數據庫中不存在的功能字段的模型
當我嘗試獲取記錄時出現錯誤 - 列「數據」不存在。如何定義數據庫中不存在的字段。 它僅用作吸氣和填塞劑領域。
TIA:d
你幹嗎打了一個不存在的屬性?您應該獲取存在的列。要發送不在模型規範中的數據,您只需發送一個對象類型作爲有效負載,然後您可以隨意處理任何內容。
您應該設置一個遠程方法來接受所需的數據,然後使用服務器上的內置CRUD方法寫入數據庫。不要嘗試使用CRUD方法在鬼域上操作。這不僅難以推理,還可能引起人們對代碼庫的新手不熟悉。
MODEL.remoteMethod('customRemoteMethodName',
{
accepts: [
{
arg: 'data', type: 'object'
}
],
returns: {
arg: 'result',
type: 'object'
}
}
);
的data
ARG上面可以包含任何你喜歡的話,和遠程方法裏面,可以書面形式向DB前處理和驗證數據:
MODEL.customRemoteMethodName = function(payload, cb) {
// modify payload.datas into processed_datas_1 and processed_datas_2
// processData() defined elsewhere or imported
let processed = processData(payload.datas);
let modelData = {
processed_datas_1: processed.data_1,
processed_datas_2: processed.data_2
//... other required model fields
};
// suggest validation here
// use built in CRUD with processed data
//
MODEL.create(modelData, function(err, modelInstance) {
if(err) {return cb(err);}
// call remote method callback to return result to client
cb(null, modelInstance);
});
};
的觀察掛鉤可有時很有用,但對於他們可以提供的「神奇」處理,再三考慮一下是個好主意。這些與實際模型定義無關的「副作用」可能會導致與新成員在一個團隊中編寫文檔和編碼方面的問題。
通過使用自定義的遠程方法時,所添加的代碼,爲的文檔(命名遠程方法類似MODEL.processAndCreate
),並在同一時間將所有數據操作直接在開發商面前。
TY爲建議,但迴環不是我用我的移動客戶端唯一的API,我有我的移動客戶端中的服務器包裝可以選擇使用哪個服務器API,所以各種API的方法需要保持相似。 –