Javascript 使用指针查找mongoose对象
我有一个这样的模型Javascript 使用指针查找mongoose对象,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我有一个这样的模型 var studentSchema = new Schema({ classroomId: Schema.Types.ObjectId, // etc }); var Student = mongoose.model('Student', studentSchema); var classroomSchema = new Schema({ // doesn't matter for this question }); 我在课堂上有一个方法,谁的工
var studentSchema = new Schema({
classroomId: Schema.Types.ObjectId,
// etc
});
var Student = mongoose.model('Student', studentSchema);
var classroomSchema = new Schema({
// doesn't matter for this question
});
我在课堂上有一个方法,谁的工作就是让学生返回。它似乎适用于两种不同的语法
classroomSchema.methods.students = function() {
// this works
return Student.find({ classroomId:this._id });
// and this also seems to work?
return Student.find({ classroomId:this });
}
问题:
- 为什么
和this
似乎产生相同的结果?只是糖吗this.\u id
- 一般来说,我能依靠这个吗?例如,我可以为指针属性指定对象而不是对象ID吗
- 谁给我提供了这个好功能(如果是这样的话),是mongo还是mongoose
- 好吧,我做了一些研究。创建教室和学生集合,如下图所示:
因此,如果我们这样做,本机MongoDB驱动程序似乎不会返回任何内容:
db.collection("classrooms").findOne({_id: 1}, function(err, classroom){
console.log("Got classroom as : " + JSON.stringify(classroom));
db.collection("students").find({classroomId: classroom}).toArray(function(err, students){
if(err) console.log(err);
else console.log(students);
//Close connection
db.close();
});
});
db.collection("classrooms").findOne({_id: 1}, function(err, classroom){
console.log("Got classroom as : " + JSON.stringify(classroom));
db.collection("students").find({classroomId: classroom._id}).toArray(function(err, students){
if(err) console.log(err);
else console.log(students);
//Close connection
db.close();
});
});
它返回一个空数组
另一方面,如果我这样做:
db.collection("classrooms").findOne({_id: 1}, function(err, classroom){
console.log("Got classroom as : " + JSON.stringify(classroom));
db.collection("students").find({classroomId: classroom}).toArray(function(err, students){
if(err) console.log(err);
else console.log(students);
//Close connection
db.close();
});
});
db.collection("classrooms").findOne({_id: 1}, function(err, classroom){
console.log("Got classroom as : " + JSON.stringify(classroom));
db.collection("students").find({classroomId: classroom._id}).toArray(function(err, students){
if(err) console.log(err);
else console.log(students);
//Close connection
db.close();
});
});
然后我得到一个包含3个学生的数组,就像我的学生集合中的一样,classroomId:1
所以我想这是猫鼬的魔法,而不是猫鼬
也不太确定你是否可以依靠这一点
希望这有帮助。知道它不是mongo的一部分很有用。非常感谢。