2016-06-12 33 views
1

我不清楚node.js中的new關鍵字。我知道它基本上創建了我的模式的一個實例。但爲什麼我不需要在更新時聲明new?所以我的問題是什麼時候在這裏使用new什麼時候在mongodb中使用新的關鍵字?

var User = module.exports = mongoose.model('tokens', userSchema); 
//route endpoint here 
.. 
new User({user: user_id, data: data}).save(callback); 

如果我不在上面的代碼中使用新的會發生什麼?即使我沒有,代碼的流程也是有意義的。糾正我,如果我錯了,謝謝。如果你需要創建一個新的實體

+0

閱讀[this](http://stackoverflow.com/a/3658673/2607571)瞭解新的介紹。我不知道在這種情況下,新需求是什麼以及它實際上做了什麼。 (但我懷疑與繼承有關的東西) –

回答

0

new關鍵字是必要的情況下。

比方說,你想創建你的數據庫的新用戶。你可以這樣做: const user = new User({user: id, data}) 然後你有兩個選擇,你可以在保存之前改變用戶對象,或者使用user.save()立即保存它。

像這樣:

const user = new User({user: id, data}) 
user.age = 21; 
user.save(); 

在你的練習,你會發現,有時你不希望在創建時,它保存實體DB。有時在插入數據庫之前,您想對其執行一些操作。

關於質詢爲什麼你不需要使用new關鍵字執行更新之前。

所以要進行更新,首先你需要從數據庫取回現有文檔。 User.find({id: 'someid'});在這種情況下,Mongoose會爲您生成一個新對象。 User.find將返回一個新的對象。由於它已經在數據庫中,因此可以更新。

0

我知道它基本上創建我的架構的一個實例。

其實,在你的第一行代碼,你所創建的模型,該模型使用架構(不是實例)。在你的最後一行是創建您首次創建模型(這被稱爲document)的一個實例。

但是當我做更新時,爲什麼我不需要聲明new

你不一定必須使用新的每一次你做數據庫調用,但也有它一些好處(見的最後一個環節)

如果我沒有在上面使用新代碼會發生什麼?

同樣的事情會發生。

所以我的問題是什麼時候在這裏使用新的。

A good answer to your question。當我實際在數據庫中創建一行時(即,當我創建一個新用戶時),我選擇創建一個文檔。對於搜索(例如)(findOnefindById),我使用該模型。這有助於我保持我的代碼在語義上分離。

+0

同樣的事情會發生?那麼在上述情況下'new'有什麼意義?它不需要驗證任何東西(根據您提供的鏈接)。 –

相關問題