首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在Vuejs中获得猫鼬查询的响应,但可以处理邮递员请求。

无法在Vuejs中获得猫鼬查询的响应,但可以处理邮递员请求。
EN

Stack Overflow用户
提问于 2019-05-30 18:13:14
回答 2查看 187关注 0票数 0

服务器端首先是我的Api的工作原理

代码语言:javascript
复制
  searchPosts(params) {
    return Api().get('search', params);
  },
代码语言:javascript
复制
var postRouter = express.Router();

postRouter.get('/search', (req, res) => {
  var db = req.db;
  Post.find({ capacity: { $lte : req.body.capacity } }, function (error, q) {
    if (error) { console.error(error); }
    res.send({q})
  })
})

有了这个,在我的特快路线上,我就可以在/search上得到与身体有关的请求

代码语言:javascript
复制
{
    "capacity":60
}

举个例子,并且有一个正常工作的响应。

代码语言:javascript
复制
{
    "q": [
        {
         "obj":"obj"
        },
     ]
}

网站端在我的.Vue文件中,我在按钮上的循环后调用这个函数

代码语言:javascript
复制
<v-btn
:disabled="!formIsValid"
flat
color="primary"
type="submit"
@click="searchPost">Search</v-btn>
代码语言:javascript
复制
  methods: {
    async searchPost() {
      const response = await PostsService.searchPosts({
        capacity: this.form.capacity,
        equipments: this.createObjectFromArray(this.form.equipments),
        date: this.form.date,
        time: this.form.time,
      });
      console.log(response);
      this.availableList = response.q;
    },

在邮递员中,我正确地得到了一个q[]数组,里面有我所有的过滤对象,但是在铬request上,里面没有q

对于我的Api日志,我没有收到邮递员的错误,但是

代码语言:javascript
复制
message:
   'Cast to number failed for value "undefined" at path "capacity" for model "Post"',
  name: 'CastError',
...

在网上进行真正的测试

有关信息,this.availableListData()中定义。

代码语言:javascript
复制
 data() {
    const defaultForm = Object.freeze({
      capacity: 0,
      date: new Date().toISOString().substr(0, 10),
      time: null,
      equipments: [],
    });
    return {
      form: Object.assign({}, defaultForm),
      datePicker: false,
      hourMenu: false,
      availableList: [],
      allList: [],
      defaultForm,
    };
  },
EN

回答 2

Stack Overflow用户

发布于 2019-05-30 19:31:21

确保您的Post模型中的容量字段包括type: number。默认情况下,如果您没有在模型中显式地将类型声明为数字,则可能会假定您正在提交一个字符串值。

此外,由于您正在等待响应,您还必须确保数据分配等待响应返回。试试这个:

代码语言:javascript
复制
methods: {
    async searchPost() {
      const response = await PostsService.searchPosts({
        capacity: this.form.capacity,
        equipments: this.createObjectFromArray(this.form.equipments),
        date: this.form.date,
        time: this.form.time,
      })
      .then( response => {
         console.log(response);
         this.availableList = response.data.q; 
       }
    )}

注意,我没有使用response.q,而是使用了response.data.q。我现在不能测试这个,所以如果它不能工作,请尝试切换回response.q

票数 0
EN

Stack Overflow用户

发布于 2019-05-30 20:18:31

我在我的vuejs文件中编辑了我的请求

代码语言:javascript
复制
async searchPost() {
      const response = await PostsService.searchPosts({
        capacity: this.form.capacity,
        equipments: this.createObjectFromArray(this.form.equipments),
        date: this.form.date,
        time: this.form.time,
      });
      this.availableList = response.data;
    },

在我的阿皮里已经改变了

代码语言:javascript
复制
  searchPosts(params) {
    return Api().get('search', { params });
  },

我在正文中传递参数,而不是通过查询字符串来运行get命令,真是太愚蠢了。

因此,我已经相应地更新了get函数

代码语言:javascript
复制
postRouter.get('/search', (req, res) => {
  var db = req.db;
  Post.find({ capacity: { $lte : req.query.capacity } }, 'title description capacity equipments resa', function (error, q) {
    if (error) { return res.status(500).send(error); }
    res.send(q);
  })
})

若要在req.查询中查找我的查找参数,请不要再查询主体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56383538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档