Javascript 使用节点URL模块,如何一次设置所有搜索参数?

Javascript 使用节点URL模块,如何一次设置所有搜索参数?,javascript,node.js,url,Javascript,Node.js,Url,我知道你可以做到: myUrl.searchParams.set('param1', 'value'); myUrl.searchParams.set('param2', 'value'); ... 我想做的是: myUrl.searchParams.set({ param1: 'value', param2: 'value }); 但这是行不通的 我发现您可以使用URLSearchParams类来执行此操作: myParams = new URLSearchParams({

我知道你可以做到:

myUrl.searchParams.set('param1', 'value');
myUrl.searchParams.set('param2', 'value');
...
我想做的是:

myUrl.searchParams.set({
    param1: 'value',
    param2: 'value
});
但这是行不通的

我发现您可以使用
URLSearchParams
类来执行此操作:

myParams = new URLSearchParams({
    param1: 'value',
    param2: 'value
});
但我不知道如何使用它。这些方法不起作用:

myUrl.searchParams = myParams;


我也没有尝试过其他一些事情。除非我快发疯了,否则我找不到它在哪里显示如何执行此操作。

您的想法是正确的,而且它不是一个打字错误,但是您需要将params对象分配给
搜索
,而不是
搜索参数

myUrl.search = myParams
myURL.searchParams
对象是由
new URL()
自动创建的。你可以使用它的方法,但是。。。不幸的是,一旦创建了该对象,就太晚了,不能同时设置多个参数,因为只有构造函数支持,而它的任何方法都不支持

认为您应该能够自己创建一个新实例并将其分配给
searchParams
属性是合乎逻辑的。但他们决定将该属性设置为只读。我认为这会让很多人感到困惑,这毫无必要的不直观

好消息是,
myParams.search
是可写的,它将愉快地序列化
myParams
对象

const myUrl = new URL('https://example.com/');
myUrl.search = new URLSearchParams({
    param1 : 'value',
    param2 : 'value'
});
myUrl.toString();
// https://example.com/?param1=value&param2=value

我希望有人支持将对象传递给的功能,并且有一天我们可以在URL上只使用一个
搜索
相关属性。

谢谢,是的,您的方法很有效。奇怪的是他们会这样做,我想。
const myUrl = new URL('https://example.com/');
myUrl.search = new URLSearchParams({
    param1 : 'value',
    param2 : 'value'
});
myUrl.toString();
// https://example.com/?param1=value&param2=value