gpt4 book ai didi

javascript - Mongoose - 添加到我的友谊属性中的这个额外 _id 属性是什么?

转载 作者:行者123 更新时间:2023-12-03 05:45:57 24 4
gpt4 key购买 nike

所以我以前遇到过这个问题,但现在我真的想解决它并且再也不会遇到它。我有一个接受其他用户作为 friend 的用户架构。

但是,我不想仅使用类型为 Schema.Types.ObjectId, ref: "User"的单个对象向用户模式添加“ friend ”键,而是想包含其他属性,例如友谊状态等。检查下面的代码。

    UserSchema = new Schema({
email: {
type: String,
unique: true
},
name: {
type: String,
min: [1, "Name must be at least 1 character in length"],
max: [18, "Name cannot exceed 18 characters in length"]
},
password: {
type: String,
min: [6, "Password must be at least 6 characters in length"],
max: [18, "Password cannot exceed 18 characters in length"]
},
friendships: [
{
friend: {
type: Schema.Types.ObjectId,
ref: "User"
},
myGain: {
type: Number,
default: 0
},
myDebt: {
type: Number,
default: 0
},
status: {
type: String,
default: "pending"
},
requestor: {
type: Number
}
}
]
});

如您所见,友谊现在是一个数组,每个对象包含五个属性,第一个是“FRIEND”。这是对 User 模型的实际引用,其中将包含另一个用户。

我的问题是,当我做添加 friend 之类的事情时,它开始让我感到困惑。

在我的 Controller 中,以下是我创建友谊的方式。

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");
}
}
)
}
} )
}
}

问题是当我查看mongo中的新记录时,如下:

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

friend 下面那个额外的 _id 值是什么?这是指什么?这是一个独特的值,因为当我查看创建了友谊的其他 friend 时,ObjectId 值有点不同。 “friend”属性的实际 ObjectId 值是我唯一想要的值。这是正确的值。该值(以 979d 结尾)引用了另一个 friend 。我只是不明白另一个 _id 值是什么。

谢谢

最佳答案

是的,Mongoose 会为您创建的每个子文档分配一个 ObjectID,除非您告诉它不要这样做。正如您所说,它“实际上只是隐式分配”它。它是分配给您保存的一个关系对象的唯一值。

关于javascript - Mongoose - 添加到我的友谊属性中的这个额外 _id 属性是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40334812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com