有没有办法在客户端使用猫鼬创建的方法?

时间:2019-06-07 21:51:46

标签: mongoose redux mern

我想在我的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));
});

1 个答案:

答案 0 :(得分:0)

想通了!

您可以将virtuals:true选项传递给JSON。

在我的模式中:

UserSchema.set('toJSON', { virtuals: true });