我想在我的react组件中使用用猫鼬创建的方法(打印出用户的全名)。这可能吗?我尝试使用.virtual和.methods,但是它们似乎没有在我的API响应中传递。
反应成分:
render() {
const { user } = this.props.auth;
return (
<div>{user.fullName()}</div>
);
}
用户模型:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// Create Schema
const UserSchema = new Schema({
username: {
type: String,
required: true,
unique: true
},
password: {
type: String,
required: true
},
registerDate: {
type: Date,
default: Date.now
},
profile: {
firstName: {
type: String,
required: true
},
lastName: {
type: String
},
nickname: {
type: String
}
}
});
UserSchema.virtual('fullName').get(function() {
return this.profile.firstName + (' ' + this.profile.lastName) || '';
});
module.exports = User = mongoose.model('user', UserSchema);
API:
router.get('/user', auth, (req, res) => {
User.findById(req.user.id)
.select('-password')
.then(user => res.json(user));
});
答案 0 :(得分:0)
想通了!
您可以将virtuals:true选项传递给JSON。
在我的模式中:
UserSchema.set('toJSON', { virtuals: true });