gpt4 book ai didi

node.js - 在 Mongoose 中插入后找不到文档

转载 作者:可可西里 更新时间:2023-11-01 10:34:39 25 4
gpt4 key购买 nike

我正在处理一个具体而简单的案例。我需要一些帮助,因为我似乎无法为此找到解决方案。

我在 javascript 类中为 MongoDB 创建了一个简单的架构和模型。

this.UserSchema = new this.Schema({
UserId: { type: String },
IsToggle: { type: Boolean}
});

this.CalendarViewUserSchema = new this.Schema({
_id: { type: this.Schema.ObjectId },
OwnerId: { type: String },
UserList: [ this.UserSchema ]
});

this.CalendarViewUser = this.mongoose.model('CalendarViewUsers',this.CalendarViewUserSchema);

这是在构造函数中,我已经有很多数据库交互在工作,但我无法设法让它工作。

我调用这个方法来添加新文档:

AddCalendarViewUser : function(Id, UserToAddId){        
NewUser = { UserId : UserToAddId, IsToggle : false };

this.CalendarViewUser.update(
{ OwnerId : Id },
{
$set: { OwnerId : Id },
$push: { UserList : NewUser }
},
{upsert:true},
function(err){
if(err) {console.log(err);}
else {console.log('Success');}
}
);
}, // this comma just introduces the next method.

这很好用。我可以看到文档是使用 Mongo Explorer 正确创建的,如果我使用 .find() 从集合中检索所有内容,它就会显示出来。

然后,我尝试使用以下方法查找插入的文档:

FindCalendarViewUser : function(Id){
this.CalendarViewUser.findOne(
{ OwnerID : Id },
function(err,result){

if(err) {console.log(err);}
else{console.log(result);}
}
);
}

在这里,它返回 result = null。

“Id”参数在这两种方法中都是一个字符串,就像 Schema 中的“OwnerId”一样。

我做错了什么?

“OwnerId”和“Id”是相同的。我也尝试将两者都转换为 ObjectId,但没有成功。

抱歉代码格式问题。

编辑:

基本上,我可以使用 _id 字段找到文档:

{ _id : '4fb0d1702edfda0104fc2b9f'}

但我无法通过 OwnerId 字段找到它:

{ OwnerId : '4f55e1a6c2c7287814000001'}

这些值是直接从数据库中获取的,因此它们对应于实际存储的值。

编辑 2:

我刚刚发现,如果我手动插入值:

$set:  { OwnerId  : '4f55e1a6c2c7287814000001' }

然后按完全相同的字符串搜索,它返回文档!

this.CalendarViewUser.findOne(
{ OwnerID : '4f55e1a6c2c7287814000001'}
...

所以我猜它是在文档的 OwnerID 字段中插入了某种垃圾,或者与该字段的类型存在某种不兼容。我会发布结果。

最佳答案

事实证明,FindCalendarViewUser 函数的回调函数需要在其自身周围加上括号...现在可以工作了,只需添加这些括号...

FindCalendarViewUser : function(Id){
this.CalendarViewUser.findOne(
{ OwnerID : Id },
(function(err,result){

if(err) {console.log(err);}
else{console.log(result);}
})
);
}

这是工作示例。耶稣基督为什么。我可以发誓我在其他场合没有使用它。

编辑:现在它可以在没有括号的情况下工作。对不起。这一定是我在代码周围遇到的一些小问题。我只是找不到它。

关于node.js - 在 Mongoose 中插入后找不到文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10555597/

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