2017-11-26 10 views
0

私はNodeJSでアカウントを更新しました。私はそれをクライアント側で必要とするため、私に新しい更新値を返します。それはキー値のjOkで未定義のログをログします。私は間違って何をしているのですか?デシベルでMongoDb updateOne()の結果は未定義です

user.updateAccount = (jUserData, fCallback) => { 
     var jUser = { 
      userName: jUserData.txtEditAccountEmailorPhoneNumber, 
      firstName: jUserData.txtEditAccountName, 
      lastName: jUserData.txtEditAccountLastName, 
      password: jUserData.txtEditAccountPassword, 
      image: global.sUpdateUserImagePath 
     } 
     var userObjectId = global.mongoId(jUserData.txtEditAccountId) 
     global.db.collection('users').updateOne({ "_id": userObjectId }, { $set: jUser }, (err, jResult) => { 
      if (err) { 
       var jError = { "status": "error", "message": "ERROR -> updateAccount -> user.js -> 001" } 
       return fCallback(false, jError) 
      } 
      var jUserId = jResult._id 
      var jNewUserRole = jResult.userRole 
      var jNewUserName = jResult.userName 
      var jNewUserFirstName = jResult.firstName 
      var jNewUserLastName = jResult.lastName 
      var jNewUserImage = jResult.image 
      var jOk = { 
       "status": "ok", 
       "message": "user.js -> account updated -> 000", 
       _id: jUserId, 
       userRole: jNewUserRole, 
       userName: jNewUserName, 
       firstName: jNewUserFirstName, 
       lastName: jNewUserLastName, 
       image: jNewUserImage, 
      } 
      return fCallback(false, jOk) 
     }) 
    } 

マイユーザーtable's文書構造:findOneAndUpdateと

{ 
    "_id" : ObjectId("5a1a627f942bca5149ab3f25"), 
    "userRole" : "admin", 
    "userName" : "[email protected]", 
    "firstName" : "B", 
    "lastName" : "B", 
    "password" : "2", 
    "image" : "public/img_webshop/fileUserImage-1511710009148.png" 
} 

更新()、私はreturnNewDocumentを追加しました:真。まだ定義されていません。私は間違って何をしていますか?あなたが更新されたオブジェクトは、その後findOneAndUpdateを(使う必要がある場合は、デフォルトのUpdateOneによって

user.updateAccount = (jUserData, fCallback) => { 
    var jUser = { 
     userName: jUserData.txtEditAccountEmailorPhoneNumber, 
     firstName: jUserData.txtEditAccountName, 
     lastName: jUserData.txtEditAccountLastName, 
     password: jUserData.txtEditAccountPassword, 
     image: global.sUpdateUserImagePath 
    } 
    var userObjectId = global.mongoId(jUserData.txtEditAccountId) 
    global.db.collection('users').findOneAndUpdate({ "_id": userObjectId }, { $set: jUser }, { returnNewDocument: true }, (err, jResult) => { 
     if (err) { 
      var jError = { "status": "error", "message": "ERROR -> updateAccount -> user.js -> 001" } 
      return fCallback(false, jError) 
     } 
     var jUserId = jResult._id 
     var jNewUserRole = jResult.userRole 
     var jNewUserName = jResult.userName 
     var jNewUserFirstName = jResult.firstName 
     var jNewUserLastName = jResult.lastName 
     var jNewUserImage = jResult.image 
     var jOk = { 
      "status": "ok", 
      "message": "user.js -> account updated -> 000", 
      _id: jUserId, 
      userRole: jNewUserRole, 
      userName: jNewUserName, 
      firstName: jNewUserFirstName, 
      lastName: jNewUserLastName, 
      image: jNewUserImage, 
     } 
     return fCallback(false, jOk) 
    }) 
} 

答えて

1

は()の代わりに

+0

私はちょうど私がreturnNewDocumentを追加findOneAndUpdate()で更新をした)更新された項目を返さない:真。まだ定義されていません。私は間違って何をしていますか? – codeDragon

+0

returnNewDocumentをreturnOriginalに変更し、falseに設定します。https://stackoverflow.com/a/35627439/5239892 – kingdynastyk

+0

はまだ未定義を返します。( – codeDragon

関連する問題