2017-10-28 3 views
0

私は午前中にこれを検索し、さまざまな修正を試みましたが、わかりません。findOneAndUpdateは関数ではありません

私はエラーになっ保つ「TypeError例外を:req.user.findOneAndUpdateは関数ではありません」私はこれを実行しようとすると:

req.user.findOneAndUpdate({_id: req.user._id}, { $addToSet: { flashcards : { $each: cards }}}, {upsert : true}, function(err, doc) { 
     if(err) return console.log(err); 
     res.send(doc); 
    }); 

私は明示的にユーザーモデルにreq.userを回してみました(例えばVAR NEWUSER =新しいユーザー(req.body)、クエリなどを簡素化しようとしたが、何も動いていないようにみえ

編集:モデル宣言で

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

var NewUser = new User(req.user); 

    NewUser.findOneAndUpdate({_id: req.user._id}, { $addToSet: { flashcards : { $each: cards }}}, {upsert : true}, function(err, doc) { 
     if(err) { return console.log(err); } 
     else { return res.send(doc);} 
    }); 

Userモデルスキーマ

const mongoose = require('mongoose'), 
    Schema = mongoose.Schema, 
    FlashcardSchema = require('./flashcardSchema'), 
    bcrypt = require('bcrypt-nodejs'); 

var UserSchema = new Schema({ 
    username: { 
     type: String, 
     required: false 
     }, 
     email: { 
     type: String, 
     required: true, 
     unique: true 
     }, 
     password: { 
     type: String 
     }, 
     created_on: { 
     type: Date, 
     default: Date.now 
     }, 
     points: Number, 
     flashcards: [FlashcardSchema], 
     courses: [{type: Schema.Types.ObjectId, ref: 'Course'}] 
}); 

UserSchema.methods.generateHash = function(password) { 
    return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null); 
}; 

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

module.exports = UserSchema; 

、あなたはERR を確認した後に戻ってきている

const mongoose = require('mongoose'), 
    Schema = mongoose.Schema, 
    UserSchema = require('../schemas/userSchema'); 

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

あなたは必ずそのreq.user.findOneAnd ...だけではなく、user.findOneAndですか...? – vicbyte

+0

ええ、Passportを使ってJSONリクエストに埋め込まれています:) – Coreylh

+0

モデル宣言を投稿してください。 – vicbyte

答えて

0

解決策はありません、それのインスタンス上で、モデル上で機能を実行することです。だから、代わりに:

var NewUser = new User(req.user); 
NewUser.findOneAndUpdate... 

の操作を行います。

User.findOneAndUpdate... 
0

モデルはそう

req.user.findOneAndUpdate({_id: req.user._id}, { $addToSet: { flashcards : { $each: cards }}}, {upsert : true}, function(err, doc) { 
     if(err) {return console.log(err);} 
     else {return res.send(doc);} 
    }); 
関連する問題