2017-05-27 5 views
1

私はFacebookのログインでMongooseを使ってログインしています。データの更新中に問題が発生しています。 マングース更新クエリはupsertでデータを更新し続け、更新せずにフィールドを1つだけ追加し続けます

この

は私のスキームファイル

var mongoose = require('mongoose'); 


var Schema = mongoose.Schema; 

// Schema 
var RegSchema = mongoose.Schema({ 
    UserName: String, 
    UserEmail: String, 
    userprofileImage : String, 
    userId: String, 
    reg_time : { 
     type : Date, default: Date.now 
    } 
}, { collection: 'user' }); 

// Model 
module.exports = mongoose.model('UserReg', RegSchema); 

であり、これは今では、とのコレクション内のユーザーデータを挿入し続けて更新し、(見つからない場合)を挿入は

var express = require('express'); 
var mongoose = require('mongoose'); 
var bodyParser = require('body-parser'); 
var app = express(); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 



var UserReg = require('./myschema.js'); 

module.exports = function(userdetail, callback){ 
var bb; 

        var UserAdd = new UserReg({ 
           "UserName": userdetail.username, 
           "UserEmail": userdetail.useremail, 
           "userId": userdetail.userId, 
           "userprofileImage": userdetail.userprofileImage 
          }); 

        var userdetailchange = { 
           "UserName": userdetail.username, 
           "UserEmail": userdetail.useremail, 
           "userId": userdetail.userId, 
           "userprofileImage": userdetail.userprofileImage 
        }; 

        // Update if found otherwise Insert 
        UserAdd.update({"userId":userdetail.userId },{ $set:userdetailchange, $setOnInsert:userdetailchange ,upsert:true, new: true, setDefaultsOnInsert: true}, function (err, data) { 
          if (err) { 
           callback(err); 
          } 
           callback(data);        
        }); 

}; 

を置いている私のメインファイルですuserIdである1つのフィールドだけでなく、デフォルトの_idフィールドです。一致するものが見つかった場合は全データを更新してください。またはコレクション内に全データを挿入してください。どんな助力も高く評価されます。

答えて

1

upsertnewsetDefaultsOnInsertは(hereを文書化)updateに独立し、三番目の引数に渡す必要がオプション、以下のとおりです。私はオプションは、その私に与えてエラーを分離置かれている場合

UserReg.update({ 
    "userId" : userdetail.userId  // query document 
}, { 
    $set   : userdetailchange, // update document 
    $setOnInsert : userdetailchange 
}, { 
    upsert    : true,  // options 
    new     : true, 
    setDefaultsOnInsert : true 
}, function (err, data) { 
    ... 
}); 
+0

。 callback.apply()は関数ではありません。 – noobcode

+0

@noobcode 'UserAdd.update()'の代わりに 'UserReg.update()'を意味すると思います。編集を参照してください。 – robertklep

+0

ありがとうございました。今働いている。非常にありがとう。 – noobcode

関連する問題