gpt4 book ai didi

javascript - SimpleSchema 中用于更新的 autoValue 未设置给定值

转载 作者:行者123 更新时间:2023-11-28 04:07:23 27 4
gpt4 key购买 nike

我在 SimpleSchema 中使用以下字段,

  "fileNo": {
type: String,
label: "File No.",
autoValue: function() {
console.log('this', this);
console.log('typeof this.value.length ', typeof this.value.length);
console.log('this.value.length ', this.value.length, this.value.length === 0, this.value.length == 0);
console.log('this.value ', this.value, typeof this.value);
console.log('this.operator ', this.operator);
console.log('this.isSet ', this.isSet);
if ( this.isSet && 0 === this.value.length ) {
console.log('if part ran.');
return "-";
} else {
console.log('else part ran.');
}
},
optional:true
},

我正在使用autoform更新字段。问题是,当我使用空字符串更新字段时(即保持文本框为空),值 - 未按照上面 SimpleSchema 代码中的字段定义进行设置。

我得到如下日志,

clients.js:79 this {isSet: true, value: "", operator: "$unset", unset: ƒ, field: ƒ, …}
clients.js:80 typeof this.value.length number
clients.js:81 this.value.length 0 true true
clients.js:82 this.value string
clients.js:83 this.operator $unset
clients.js:84 this.isSet true
clients.js:86 if part ran.
clients.js:79 this {isSet: true, value: "-", operator: "$unset", unset: ƒ, field: ƒ, …}
clients.js:80 typeof this.value.length number
clients.js:81 this.value.length 1 false false
clients.js:82 this.value - string
clients.js:83 this.operator $unset
clients.js:84 this.isSet true
clients.js:89 else part ran.

并且我的集合文档没有字段fileNo

我错过了什么?我想要的只是当 fileNo 的值为空/未定义时,值必须设置为-(连字符)。在文档中,它必须类似于 fileNo : "-"

最佳答案

你应该处理两种情况:

  1. 文档插入,其中fileNo为空(未定义)value

  2. 使用 fileNo 的空 value 记录 update

在第二种情况下,如果字段值为空字符串(可选:true),验证器将尝试从文档中删除该字段。我们可以发现并防止这种情况。

  fileNo: {
type: String,
label: 'File No.',
autoValue() {
if (this.isInsert && (this.value == null || !this.value.length)) {
return '-';
}
if (this.isUpdate && this.isSet && this.operator === '$unset') {
return { $set: '-' };
}
},
optional: true
}

添加:用于编写此答案的文档(代码按预期工作;在本地测试):

关于javascript - SimpleSchema 中用于更新的 autoValue 未设置给定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46584355/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com