例如,nexts模式位于不同的文件夹中,如下所示:
cr/user
lms/content
这是schemaContent
user: {
type: Schema.Types.ObjectId,
ref: 'cr/user'
}
如何从内容中引用用户?
因为当我使用cr / user时出现错误" Schema尚未注册模型"
我只需要在Content.find().populate({ path: 'users' })
之类的内容中填充用户,将用户保存在名为cr的文件夹中,将内容保存在名为lms的文件夹中
答案 0 :(得分:0)
您正在尝试嵌套文档。尝试以下方法来嵌套文档。
我将假设目录cr
和lms
位于名为demoproject
的目录中
<强> demoproject / CR / user.js的强>
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const UserSchema = new Schema({
name:{
type : String,
required: true
}
});
const User = mongoose.model("User",UserSchema);
module.exports = User;
<强> demoproject / LMS / content.js 强>
./../cr/user
- 从lms
目录返回并进入cr/user
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const User = require("./../cr/user");
const ContentSchema = new Schema({
type:{
type : String,
required: true
},
users : [{
type : Schema.Types.ObjectId,
ref : "User"
}]
});
const Content = mongoose.model("Content",ContentSchema);
module.exports = Content;
如何从内容中引用用户?
我希望你的问题现在清楚了。请继续阅读
关键时刻
允许使用这两个模型插入数据。
创建一个文件来编写mongo查询(demoproject/index.js
)。
User model
嵌套在Content model
中,我们需要先将数据保存到User model
Content model
users
contentdata.users.push(userdata);
对象
contentdata
contentdata.save();
<强> demoproject / index.js 强>
const User = require("./cr/user");
const Content = require("./lms/content");
const userobj = new User({name : "rockyjohnson"});
const contentobj = new Content({type : "gloves"});
userobj.save().then((userdata)=>{
contentobj.save().then((contentdata)=>{
contentdata.users.push(userdata);
contentdata.save();
}).catch((err)=>{
console.log("err while saving contentdata ", err);
})
}).catch((err)=>{
console.log("err while saving userdata ", err);
})
这就是全部
更新回答第二个问题
find
在其承诺中返回array
个对象。我可以在此处提取users
内的Content model
个对象。以下是我用来验证的查询
Content.find().then((data)=>{
data.forEach(element => {
console.log("element users ",element.users); // element.users contains all id's stored in the users array
});
}).catch((err)=>{
console.log("err ",err);
})