mon goose получение `TypeError: user.save не является функцией` - PullRequest
0 голосов
/ 07 мая 2020

При попытке отправить данные пользователя в базу данных с помощью mon goose, проблема такая:

Чтобы пользователь мог получить кредиты, я беру с него «деньги» с помощью библиотеки полос, поэтому, когда Я пытаюсь отправить данные в базу данных. Я получаю эту ошибку - TypeError: req.user.save не является функцией

Вот код: // Модель пользователя

const mongoose = require('mongoose');
const { Schema } = mongoose;


const UserSchema = new Schema({
    googleId: String,
    credits: { type: Number, default: 0}
});

mongoose.model('users', UserSchema);

//Route code 
const keys = require('../config/keys');
const stripe = require('stripe')(keys.stripeSecretKey);
const User   = require('../models/User');

module.exports = app => {
  app.post('/api/stripe',  async (req, res) => {
    const charge = await stripe.charges.create({
      amount: 500,
      currency: 'usd',
      description: '$5 for 5 credits',
      source: req.body.id
    });
    req.user.credits += 5;
    const user = await req.user.save();

    res.send(user);
  });
};

//Index file
const express       = require('express');
const mongoose      = require('mongoose');
const keys          = require('./config/keys');
const bodyParser    = require('body-parser');
const passport      = require('passport');
require('./models/User');
require('./services/passport');


mongoose.connect(keys.mongoURI);
const app  = express();

app.use(bodyParser.json());
app.use(passport.initialize());
app.use(passport.session());


require('./routes/authRoutes')(app);
require('./routes/billingRoutes')(app);

const PORT = process.env.PORT || 5000;
app.listen(PORT);
console.log('The server is running!');

1 Ответ

0 голосов
/ 07 мая 2020

.save () - это метод, который следует использовать над объектом MongoDB.

Сначала вы должны найти своего пользователя в MongoDB, например:

(async()=>{
 try{
  const user = await User.findById(userID)
  // now user is an Object which has the .save() method 

  // now you can modify the name of the userm for example
  user.name = "new name"

 // after saving the changes wit .save() method
 await user.save() // you're connecting with DB to communicate about introducing new data

 // ...
 }catch(err){
 // ...
 }
})()

Надеюсь, полезно.

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