2016-10-30 71 views
0

所以我遇到過這個問題之前,但現在我真的想平平它,永遠不會再遇到它。我有一個用戶模式,接受其他用戶作爲朋友。然而,我不想用一個類型爲Schema.Types.ObjectId,ref:「User」的單個對象向用戶模式添加「朋友」鍵,而是要包含其他屬性,例如友誼狀態等。檢查下面的代碼。正如你所看到的,友誼現在是一個數組,每個對象包含五個屬性,第一個屬性是'朋友'。這是對用戶模型的實際引用,它將包含另一個用戶。貓鼬 - 什麼是這個額外的_id屬性被添加到我的友誼屬性?

我的問題是開始混淆我做事情,如添加一個朋友。

在我的控制器中,這裏是我如何創造一種友誼。

const friendshipController = { 
    create: function(req, res) { 
    User.findByIdAndUpdate(req.params.id, 
    { $push: { "friendships": {"friend": req.params.friendId } } }, {upsert: true}, function(err, user) { 
     if (err) { 
     console.log(err); 
     } else { 
     User.findByIdAndUpdate(req.params.friendId, 
      { $push: { "friendships": {"friend": req.params.id } } }, {upsert: true}, function(err, user) { 
      if (err) { 
       console.log(err); 
      } else { 
       console.log("donezo"); 
      } 
      } 
     ) 
     } 
    }) 
    } 
} 

的問題是,當我看着在蒙戈新的記錄,它是這樣的:

password" : "password", 
    "bets" : [ ], 
    "friendships" : [ 
     { 
      "friend" : ObjectId("581676fbfbbb9a43ac8c979d"), 
      "_id" : ObjectId("58168257a7c4cb4512b1cafb"), 
      "status" : "pending", 
      "myDebt" : 0, 
      "myGain" : 0 
     } 
    ], 
    "__v" : 0 

什麼是朋友的下方,額外_id值?這是指什麼?這是一個獨特的價值,因爲當我看着創建友誼的另一個朋友時,ObjectId值有點不同。 「friend」屬性的實際ObjectId值是唯一我想要的值。這是正確的價值。該值(以979d結尾)引用另一個朋友。我只是沒有得到其他_id值。

感謝

+1

[停止Mongoose從子文檔數組項目創建\ _id屬性]的可能重複(http://stackoverflow.com/questions/17254008/stop-mongoose-from-creating-id-property-for-sub-文件列表項) –

+0

感謝您的鏈接資源。我看了一遍,這不是這個問題的重複。與schema和_id類似,但不是重複的。雖然好資源。我的問題是這個_id指的是什麼?貓鼬的字面意思只是隱含地將其分配爲友誼ID嗎?因爲如果我需要從我的前端改變友誼狀態,那對我來說真的很有幫助,我可以通過_id並更新一個特定的友誼。應該更容易地查詢我所有的友誼,即findAndUpdateOne where _id = ..你就明白了。那是_id是什麼? – user7024499

+0

我認爲你可以爲數組中的所有對象執行findOne({「frendships._id」:[objectId]})'。當你推入數組時,Id會被自動分配。這是一件普通的事情 –

回答

1

是,貓鼬分配一個對象ID爲您創建,除非你告訴它不要每個子文檔。就像你說的那樣,它「從字面上隱含地分配」它。這是分配給您保存的一個關係對象的唯一值。

相關問題