每次用户使用mongoose的fineoneandupdate和upsert点击我的应用时,我都会尝试更新日期功能 . 最初创建新用户时,所有内容都会正确设置 . 但是,当系统更新已存在的用户时,它会更新我告诉它的日期功能,但也会强制将字符串数组恢复为空数组 .

这是我的架构:

var userSchema = new Schema({
            _id: mongoose.Schema.Types.ObjectId,
            spuser_EID: String,
            taken_onboarding_survey: Boolean,
            our_last_seen: Date,
            surveys_taken: [String]
          });

这是我告诉它用作更新的新用户:

var updateUser = new User({
            "our_last_seen": new Date().getTime()
          });

这是该用户对象进入之前的控制台日志:

{ surveys_taken: [], our_last_seen: 2018-08-09T17:35:58.756Z }

这是findoneandupdate调用:

User.findOneAndUpdate({
              spuser_EID: params["userEID"]
            },
            updateUser,
            {
              upsert: true,
              new: true
            },
            function(err, userdoc) { // callback
              if (err) {
                // handle error...
              } else {
                // handle document...

基本上,我希望它在更新“our_last_seen”功能时不更新该阵列 . 我不确定是什么导致了错误,特别是因为我没有在架构中设置默认值 . 我完全被难倒了,所以如果有任何我错过的其他信息,请告诉我 . 您可以给予的任何帮助将非常感激 .

谢谢!