例如,nexts 模式位于不同的文件夹中,如下所示:
cr/user
lms/content
这是 schemaContent
user: {
type: Schema.Types.ObjectId,
ref: 'cr/user'
}
如何从内容中引用用户?
因为当我使用 cr/user 时,我收到一个错误“模式尚未为模型注册”
我只需要从诸如Content.find().populate({ path: 'users' })
将用户保留在名为 cr 的文件夹中以及在名为 lms 的文件夹中的内容之类的内容中填充用户
您正在尝试嵌套文档。尝试以下方法来嵌套文档。
我将假设目录cr
并lms
在名为的目录内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;
演示项目/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
将 userdata 对象推入 contentdata 后不要忘记保存contentdata.save();
演示项目/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);
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句