与猫鼬的NodeJS
我有以下的猫鼬的模式:
var userSchema = new Schema({
username: {
type: String,
},
password: {
type: String,
},
email: {
type: String,
},
_imageId: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'files'
}]
});
当我以这种方式使用的功能findOne()从数据库中检索数据
getById: function (req, res) {
User.findOne({ _id: req.params.id }, function (err, user) {
getProfileImage(req, user, function(user) {
return res.status(200).send({
msg: 'User retrieved successfully',
data: user
});
});
});
}
我得到的图像阵列,但只是与自己的ID,所以我有使用功能getProfileImage手动添加URL。
有没有用猫鼬务实地添加URL的方式?
编辑:
我想补充getProfileImage实施
var getProfileImage = function(req, user, callback) {
if(user && user._imageId.length > 0) {
user.set('profileImage', req.protocol + '://' + req.get('host') + '/image/get/' + user._imageId[user._imageId.length - 1], { strict: false });
}
callback(user);
};
回答如下:
是的,有一种方法,它不涉及在_imageId
存储userSchema
。这是周围的其他方法。你需要创建一个存储imageSchema
一个_userId
,并从那里获取的所有图像。
Schemas
var userSchema = new Schema({
username: {
type: String,
},
password: {
type: String,
},
email: {
type: String,
}
});
var imageSchema = new Schema({
url: {
type: String,
},
userId: {
type: mongoose.Schema.Types.ObjectId,
}
});
Controller
getById: function (req, res) {
User.findOne({ _id: req.params.id }, function (err, user) {
// Get images related to the user
Image.find({userId: req.params.id}, function(err, images) {
user.images = images;
return res.status(200).send({
msg: 'User retrieved successfully',
data: user
});
});
});
}
与猫鼬的NodeJS
我有以下的猫鼬的模式:
var userSchema = new Schema({
username: {
type: String,
},
password: {
type: String,
},
email: {
type: String,
},
_imageId: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'files'
}]
});
当我以这种方式使用的功能findOne()从数据库中检索数据
getById: function (req, res) {
User.findOne({ _id: req.params.id }, function (err, user) {
getProfileImage(req, user, function(user) {
return res.status(200).send({
msg: 'User retrieved successfully',
data: user
});
});
});
}
我得到的图像阵列,但只是与自己的ID,所以我有使用功能getProfileImage手动添加URL。
有没有用猫鼬务实地添加URL的方式?
编辑:
我想补充getProfileImage实施
var getProfileImage = function(req, user, callback) {
if(user && user._imageId.length > 0) {
user.set('profileImage', req.protocol + '://' + req.get('host') + '/image/get/' + user._imageId[user._imageId.length - 1], { strict: false });
}
callback(user);
};
回答如下:
是的,有一种方法,它不涉及在_imageId
存储userSchema
。这是周围的其他方法。你需要创建一个存储imageSchema
一个_userId
,并从那里获取的所有图像。
Schemas
var userSchema = new Schema({
username: {
type: String,
},
password: {
type: String,
},
email: {
type: String,
}
});
var imageSchema = new Schema({
url: {
type: String,
},
userId: {
type: mongoose.Schema.Types.ObjectId,
}
});
Controller
getById: function (req, res) {
User.findOne({ _id: req.params.id }, function (err, user) {
// Get images related to the user
Image.find({userId: req.params.id}, function(err, images) {
user.images = images;
return res.status(200).send({
msg: 'User retrieved successfully',
data: user
});
});
});
}