Есть ли способ использовать методы, созданные mongoose на стороне клиента? - PullRequest
0 голосов
/ 08 июня 2019

Я хотел бы использовать метод, который я создал с помощью mongoose, в моем компоненте реагирования (распечатать полное имя пользователя).Это возможно?Я пытался использовать .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 голосов
/ 12 июня 2019

Разобрался!

Вы можете передать параметр virtuals: true toJSON.

В моей схеме:

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