Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在Mongoose中插入后找不到文档_Node.js_Mongodb_Mongoose - Fatal编程技术网

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

Node.js 在Mongoose中插入后找不到文档,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在处理一个具体而简单的案件。我需要一些帮助,因为我似乎找不到解决这个问题的办法 我在javascript类中为MongoDB创建了一个简单的模式和模型 this.UserSchema = new this.Schema({ UserId: { type: String }, IsToggle: { type: Boolean} }); this.CalendarViewUserSchema = new this.Schema({ _id: { type: th

我正在处理一个具体而简单的案件。我需要一些帮助,因为我似乎找不到解决这个问题的办法

我在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”参数都是字符串,就像模式中的“OwnerId”一样

我做错了什么

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

很抱歉对代码进行了格式化

编辑:

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

{ _id : '4fb0d1702edfda0104fc2b9f'}
但我在OwnerId字段中找不到它:

{ OwnerId : '4f55e1a6c2c7287814000001'}
这些值是直接从数据库中获取的,因此它们与实际存储的值相对应

编辑2:

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

$set:  { OwnerId  : '4f55e1a6c2c7287814000001' }
然后按完全相同的字符串搜索,它将返回文档

this.CalendarViewUser.findOne(
                    { OwnerID : '4f55e1a6c2c7287814000001'}
...
所以我猜这是在文档的OwnerID字段中插入了某种垃圾,或者与字段的类型不兼容。我会发布结果。

打字错误

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

事实证明,FindCalendarViewUser函数的回调函数需要围绕其自身设置父项。。。现在它可以工作了,只需添加这些父项

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

            if(err) {console.log(err);}
            else{console.log(result);}  
        })
    );
}
这是一个有效的例子。天哪,为什么。我可以发誓我在其他地方使用过没有这个


编辑:现在它在没有父母的情况下工作。我很抱歉。这一定是我在代码方面遇到的一些小问题。我就是找不到。

很抱歉我的反馈延迟了,这确实是一个打字错误。我正在测试的文件中的console.log是正确的。我把它写在这里是打字错误。知道为什么会这样吗?你还记得在这种情况下跌跌撞撞吗?谢谢。如果我使用“_id”字段作为搜索参数,我会找到文档。如果我使用自己创建的OwnerId字段,它将找不到任何内容。我尝试使用ObjectId类型的字段OwnerId,但没有成功。我还尝试手动插入搜索查询,如:{OwnerId:'4f55e1a6c2c7287814000001'}(这是我在Mongo Explorer中看到的该字段中的Id)