这个错误说什么?类型“ ParsedQs”不可分配给类型“字符串”

时间:2020-08-25 13:24:43

标签: javascript mongodb typescript express mongoose

您好,我的问题是我想使用猫鼬的搜索查询。但是我想使用查询发出get请求。为什么不可能呢?我不明白这个错误。我正在使用猫鼬的5.10.0版本。 我不想将其作为发帖请求,也不想使用req.body。谁能帮我吗?

这是我的代码:

(property) $search: string
No overload matches this call.
The last overload gave the following error.
Type 'ParsedQs' is not assignable to type 'string'.ts(2769)

我的错误消息:

<template>
   <v-combobox
   clearable
   v-model="values"
   :items="items"
   ></v-combobox>
</template>

<script>
data () {
    return {
        items: [
            {"id": 2, "name": "tree"},
            {"id": 4, "name": "grass"},
            {"id": 5, "name": "freeze"},
            {"id": 9, "name": "moss"}
        ],
        values: ''
    }
}
</script>

3 个答案:

答案 0 :(得分:0)

req.query是一个包含请求查询的对象

因此,如果您像这样/?foo=bar&a=123

向端点发送请求,

您可以从以下位置访问查询值

req.query.foo // bar
req.query.a // 123

您正在将查询对象传递给$search,同时应该传递一个字符串,因此它应该是

Company.find({ $text: { $search: req.query.yourQueryKey as string } }).exec((err, docs) => {

答案 1 :(得分:0)

req.query一个对象,其中包含您在查询中指定的所有查询参数。

如果您的请求看起来像这样

test.com/search/?s=something

something将存储在req.query.s中。

第二个选项是使用named route parameters。 因此,您可以设置为:

请求网址

test.com/search/something

路线

app.get('/search/:search', (req, res) => {
   console.log(req.params.search); // "something". NB use req.params, not req.query
})

答案 2 :(得分:0)

添加任意,如下所示可能对您有所帮助-

Company.find({ $text: { $search: req.query as any} }).exec((err, docs) => {
-------------
-------------
-------------