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

Is there a way to use methods created by mongoose on the client side?

我想在我的反应组件中使用我用猫鼬创建的方法(打印出用户的全名)。这可能吗?我试过使用 .virtual 和 .methods 但它们似乎没有在我的 API.

的响应中传递

React 组件:

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));
});

想通了!

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

在我的架构中:

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