2016-07-29 20 views
0

我有兩個功能,這是除了一個值是$如圖所示設置幾乎相同:重構問題時的MongoDB作爲鍵

  function extracted_start(details, txt) { 
       return FutureTasks.upsert({ 
         number: details.number, 
         start_date: details.start_date, 
         end_date: details.end_date 
        }, { 
         $set: { 
          access_rights: txt, 
         } 
        }, 
       ); 
      } 

      function extracted_end(details, txt) { 
       return FutureTasks.upsert({ 
         number: details.number, 
         start_date: details.start_date, 
         end_date: details.end_date 
        }, { 
         $set: { 
          returned_status: txt, 
         } 
        }, 
       ); 
      } 

如果我試圖如下重構則我沒有使用'鑰匙'?

  function extracted_generic(details, key, txt) { 
       return FutureTasks.upsert({ 
         number: details.number, 
         start_date: details.start_date, 
         end_date: details.end_date 
        }, { 
         $set: { 
          key: txt, 
         } 
        }, 
       ); 
      } 

回答

-1

由於key被解釋爲字面字"key" - 首先創建對象,並使用:

var objToSet = {}; 
objToSet[key] = txt; 
.. 
.. 
$set: objToSet 
+0

感謝修正通用 – niceseb

+0

變種的拼寫OBJ = {}, OBJ [關鍵] = TXT ; 這是正確的語法? – niceseb

+0

@niceseb - 是的。 – tymeJV

0

您使用的密鑰作爲文本值,而不是變量。您必須創建一個對象並用obj[key] = txt手動添加它。 (附註:你也拼寫 '通用' 錯在你的函數名)

function extracted_generaic(details, key, txt) { 
 
    var obj = {}, 
 
     obj[key] = txt; 
 

 
    return FutureTasks.upsert({ 
 
    number: details.number, 
 
    start_date: details.start_date, 
 
    end_date: details.end_date, 
 
    }, { 
 
    $set: obj 
 
    }); 
 
}