2016-04-13 83 views
1

我如何使用UUID生成的字符串,而不是原始mongoose ObjectID字符串,保持objectID方法(ValueOf(),字符串(),....)?使用uuid作爲對象ID在貓鼬

當我生成的UUID,我嘗試在我的模型與

在我的貓鼬使用的模式:

var uniqueUUID = uuid.v4(); 
createUser = user({ 
      'myid': uniqueUUID, 
}); 
在我的模型/架構

var userSchema = new mongoose.Schema({ 

_id: Schema.Types.ObjectId 

}); 

得到了驗證錯誤。

ValidationError: user validation failed 
+1

http://stackoverflow.com/questions/27438882/using-uuids-in-mongoose-for-objectid-references – dcohenb

回答

0

您試圖添加模式中不存在的鍵。在您的模式中沒有定義myid密鑰。默認情況下,貓鼬不允許沒有預先定義的密鑰。

你可以改變它是這樣的:

var userSchema = new mongoose.Schema({ 

_id: {type: String, default: uuid.v4} 

}); 

那全自動assings與生成uuid.v4值的對象ID。

在創建用戶使用:

var newUser = new user(); 

這已經全自動分配的ID文件。只記得保存它。 :)

如果您想要另一個名爲myid的ID字段,可以按照如何添加_id添加到模式中。

+0

好的,我在我的代碼上犯了一個錯誤。 _id類型應該是String。現在編輯它。 – Snekw