TypeError: req.gravatar не является функцией - PullRequest
0 голосов
/ 13 июля 2020
• 1000 выше.

аккаунт. js код файла

const router = require('express').Router();
const jwt = require('jsonwebtoken');

const User = require('../models/user');
const config = require('../config');
var gravatar = require('gravatar');

router.post('/signup', (req, res, next) => {
    let user = new User();
    user.name = req.body.name;
    user.email = req.body.email;
    user.password = req.body.password;
    user.picture = req.gravatar();
    user.isSeller = req.body.isSeller;

User.findOne({ email: req.body.email }, (err, existingUser) => {
    if(existingUser) { 
        res.json({
            success: false,
            message: 'Account with that email is already exist'
        });
    }
    else{
        user.save();
        
        var token = jwt.sign({
            user: user
        }, config.secret, {
            expiresIn: '7d'
        });

        res.json({
            success: true,
            message: 'Enjoy your token',
            token: token
        });
    }
});
});

module.exports = router;

Пользователь. js код файла

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const bcrypt = require('bcrypt-nodejs');
const crypto = require('crypto');


const UserSchema = new Schema({
    email: { type: String, unique: true, lowercase: true },
    name: String,
    password: String,
    picture: String,
    isSeller: { type: Boolean, default: false },
    address: {
        add1: String,
        add2: String,
        city: String,
        state: String,
        country: String,
        postalCode: String
    },
    created: { type: Date, default: Date.now }
});

UserSchema.pre('save', function(next) {
    var user = this;

    if(!user.isModified('password')) return next();

    bcrypt.hash(user.password, null, null, function(err, hash) {
        if(err) return next(err);

        user.password = hash;
        next();
    });
});

UserSchema.methods.comparePassword = function(password) {
    return bcrypt.compareSync(password, this.password);
}

UserSchema.methods.gravatar = function(size) {
    if(!this.size) size = 200;
    if(!this.email) {
        return 'https://gravatar.com/avatar/?s' + size + '&d=retro';
    }
    else{
        var md5 = crypto.createHash('md5').update(this.email).digest('hex');
        return 'https://gravatar.com/avatar/' + md5  + '?s' + size + '&d=retro';
    }
}

module.exports = mongoose.model('User', UserSchema);

пожалуйста, помогите мне решить этот вопрос как можно быстрее возможно. потому что я любитель-разработчик в области технологий node.js.

1 Ответ

0 голосов
/ 13 июля 2020

В следующей строке gravatar не является атрибутом req и, следовательно, не может быть вызван как функция

user.picture = req.gravatar();

Я полагаю, что вы хотите сделать что-то вроде:

user.picture = gravatar.url(user.email);

С этим изменением user.picture будет содержать URL-адрес изображения профиля пользователя gravatar для этого электронного письма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...