所以我遇到過這個問題之前,但現在我真的想平平它,永遠不會再遇到它。我有一個用戶模式,接受其他用戶作爲朋友。然而,我不想用一個類型爲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值。
感謝
[停止Mongoose從子文檔數組項目創建\ _id屬性]的可能重複(http://stackoverflow.com/questions/17254008/stop-mongoose-from-creating-id-property-for-sub-文件列表項) –
感謝您的鏈接資源。我看了一遍,這不是這個問題的重複。與schema和_id類似,但不是重複的。雖然好資源。我的問題是這個_id指的是什麼?貓鼬的字面意思只是隱含地將其分配爲友誼ID嗎?因爲如果我需要從我的前端改變友誼狀態,那對我來說真的很有幫助,我可以通過_id並更新一個特定的友誼。應該更容易地查詢我所有的友誼,即findAndUpdateOne where _id = ..你就明白了。那是_id是什麼? – user7024499
我認爲你可以爲數組中的所有對象執行findOne({「frendships._id」:[objectId]})'。當你推入數組時,Id會被自動分配。這是一件普通的事情 –