我正在使用mongoose来定义架构我有user和Userdetail两个架构我需要userdetail中user数据
我有下面的模式,但我没有得到输出。我认为代码是正确的,但不知道为什么没有输出...相反,我得到的是空数组。
const mongoose = require("mongoose")
const UserDetailSchema = mongoose.Schema({
Phone : {
type : Number
},
FirstName : {
type : String
},
LastName : {
type : String
},
productimage : {
data : Buffer,
contentType : String
},
IsDeleted:{
type:Boolean,
default:false
},
UserID : {
type : String,
},
data : [{
type: mongoose.Schema.Types.ObjectId,
ref: "user"
}],
},
{timestamps: true})
const UserDetail = new mongoose.model("userdetail",UserDetailSchema);
module.exports = UserDetail;
我的用户模式是,
const mongoose = require("mongoose");
const UserSchema = mongoose.Schema({
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
IsDeleted:{
type:Boolean
},
},
{timestamps: true});
module.exports = mongoose.model("user", UserSchema);
查询为,
<pre>
router.get("/UserDetail",async (req,res)=>{
try{
const UsersData= await UserDetail.find();
res.json(UsersData)
}catch(e){
res.status(500).json({ message: e.message })
}
})
</pre>
即使我只使用find,我也必须只使用id获取数据,对吗?
输出为-
任何帮助都将不胜感激
router.patch("/UserDetail/:id",Auth,upload.single("productimage"),async(req,res)=>{
try{
const id = req.params.id;
const updatedData = req.body;
updatedData.productimage = {data: fs.readFileSync('upload/' + req.file.filename),
contentType: 'image/png'};
const options = { new: true };
const result = await UserDetail.findOneAndUpdate(
id, updatedData, options
)
res.send(result)
}catch(e){
res.status(500).json({ message: e.message })
}
})
2条答案
按热度按时间nqwrtyyt1#
可以使用
populate
函数填充字段:pxy2qtax2#
首先,您需要对userDetail模式中的userID进行一些更改。请将其更改为
UserID:{type : mongoose.Schema.Types.ObjectId},
,因为这将在将来的聚合过程中对您有所帮助。您还可以从userDetail模型中删除数据,因为在您保存数据之前,它不会存储任何数据。最后,尝试运行此聚合查询。这样,您的用户的详细信息将显示在数据数组中。