每次用户使用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”功能时不更新该阵列 . 我不确定是什么导致了错误,特别是因为我没有在架构中设置默认值 . 我完全被难倒了,所以如果有任何我错过的其他信息,请告诉我 . 您可以给予的任何帮助将非常感激 .
谢谢!