我正在开发一个节点js项目,最终用户可以在mongoDb数据库中创建和更新插座。现在,让我们说出口模式中有数百个字段,但是用户可能不会更新每个字段,即一个可以更新2个字段,其他可以更新3个字段。所以,我想创建一个可以处理每种类型请求的函数。我不知道这可以做到或有其他方式,但我是新手,你能否建议我适合我的项目。提前致谢!
对于之前的混乱感到抱歉。
我正在开发零售店的nodejs项目。注册时,每个插座在数据库中有超过50个字段。注册很好。通过API的POST请求指定了所需的所有数据。
但是当我计划更新任何一个领域时。我不知道处理什么方法。有时只会更改一个字段,或者下次一组字段没有顺序/顺序。 示例:
{"id":"ABCD", "name":"MNOPQR"}
{"id":"ABCD", "time":123, "name":"ZYX"}
所以在第一次查询中我只需要更新名称,而在接下来我需要更新名称和时间。 有没有什么办法可以在服务器端管理动态json解析,只更新请求中提到的那些字段(int数据库)。
答案 0 :(得分:0)
您可以使用多种方法。
一种是接受带有变化的对象:
function doTheChanges(changes) {
Object.keys(changes).forEach(name => {
const value = changes[name];
// Use `name` (the field name) and `value` (the value) to do the update
});
}
这样称呼:
doTheChanges({foo: "bar", biz: "baz"});
...将foo
字段更改为"bar"
,将biz
字段更改为"baz"
。 (具有无效标识符字符等的名称可以用双引号括起来:{"I'm an interesting field name": "bar"}
。)
或者,您可以使用name
和value
属性接受一系列更改:
function doTheChanges(changes) {
changes.forEach(({name, value}) => {
// Use `name` (the field name) and `value` (the value) to do the update
});
}
这样称呼:
doTheChanges([
{
name: "foo",
value: "bar"
},
{
name: "biz",
value: "baz"
}
]);
您也可以接受不同数量的参数,其中每个参数都是具有name
和value
属性的对象:
function doTheChanges(...changes) {
changes.forEach(({name, value}) => {
// Use `name` (the field name) and `value` (the value) to do the update
});
}
这样称呼:
doTheChanges(
{
name: "foo",
value: "bar"
},
{
name: "biz",
value: "baz"
}
);
请注意,这与数组选项非常相似。
或者使用builder pattern,但这可能是过度杀伤。
答案 1 :(得分:0)
您可以使用put
请求代替patch
请求,以便只有您更改的值会受到影响。