我使用Sails.js(0.9.8)和MongoDB(通過sails-mongo適配器)創建可以定位在樹視圖中的頁面集合。我想一個頁面的路徑存儲的UUIDSails.js和MongoDB:重複鍵錯誤索引
數組我的模型:
module.exports = {
schema: true,
attributes: {
uuid: {
type: 'string',
unique: true,
required: true,
uuidv4: true
},
name: {
type: 'string',
required: true,
empty: false
},
path: {
type: 'array',
required: true,
array: true
}
}
}
它運作良好,當我保存一個「根」頁面(在「路徑」屬性只是一個項目。因爲它是一個根頁面下面是它被保存在MongoDB中:
{
_id: ObjectId("52f853e9609fb6c0341bdfcc"),
createdAt: ISODate("2014-02-10T04:22:01.828Z"),
name: "Home Page",
path: [
"a2b23e1f-954b-49a3-91f1-4d62d209a093"
],
updatedAt: ISODate("2014-02-10T04:22:01.833Z"),
uuid: "a2b23e1f-954b-49a3-91f1-4d62d209a093"
}
但是,當我想創建下面我以前創建的頁面(首頁/產品),一個「子頁」,我得到這個錯誤:
MongoError: E11000 duplicate key error index: cms-project.item.$path_1 dup key: { : "a2b23e1f-954b-49a3-91f1-4d62d209a093" }
這裏是我發送的數據:
{ name: 'Products',
uuid: 'a004ee54-7e42-49bf-976c-9bb93c118038',
path:
[ 'a2b23e1f-954b-49a3-91f1-4d62d209a093',
'a004ee54-7e42-49bf-976c-9bb93c118038' ] }
我可能錯過了一些東西,但我不知道是什麼。 如果我將路徑存儲在一個字符串而不是一個數組中,它可以很好地工作,但我覺得它不那麼優雅和方便。
謝謝您的回答,它幫助我解決我的問題!我對這個集合做了幾次測試,實際上對'path'屬性仍然有一個唯一的約束,即使我從Sails.js模型中刪除它。 – Etienne