【发布时间】:2018-10-22 11:53:33
【问题描述】:
我正在使用 Nuxt + Express/Feathers 构建一个应用程序,两者通过 socket.io 连接进行通信。使用 feathers-vuex,我可以轻松地从客户端向后端发出请求,并且响应完美地返回到 chrome 检查器的网络选项卡中,但在我的代码中已解决的承诺中,每个返回的对象都是 undefined。
Websocket 请求:
4235["find", "journals", {}]
Websocket 响应:
4335[null, {total: 3, limit: 10, skip: 0,…}]
0: null
1: {total: 3, limit: 10, skip: 0,…}
data: [{_id: "5af62077f2389a7490be22d6"}, {_id: "5af62094f2389a7490be22d7", some: "data"},…]
0: {_id: "5af62077f2389a7490be22d6"}
1: {_id: "5af62094f2389a7490be22d7", some: "data"}
2: {_id: "5af66b3ae8c629789f35ead3", name: "john", surname: "doe"}
limit: 10
skip: 0
total: 3
这就是results 在调试器中的样子:
{total: 3, limit: 10, skip: 0, data: Array(3)}
data: Array(3)
0: undefined
1: undefined
2: undefined
length: 3
__proto__: Array(0)
limit: 10
skip: 0
total: 3
__proto__:
...
这是我提出请求的 Nuxt 页面部分:
<template>
<h1>{{journals}}</h1>
<button class="btn btn-primary" @click="findThoseJournals()">
Search Journals
</button>
</template>
<script>
import { mapActions } from 'vuex';
export default {
data () {
return {
journals: []
}
},
methods: {
...mapActions('journals', {
findJournals: 'find'
}),
findThoseJournals() {
this.findJournals({query: {}}).then((results) => {
debugger;
this.journals = results.data;
});
}
},
}
</script>
为了记录,results.data 在渲染时看起来像 [null,null,null]。
我完全不知道是什么导致了这种行为。为什么元数据会延续,而数据本身却没有(但 number 的条目仍然如此)?在 websocket 帧响应和专门导致数据消失的承诺之间发生了什么?
【问题讨论】:
-
你在哪里打电话
findThoseJournals?你能展示更多的组件和相关的 Vuex 模块吗? -
添加了相关细节!只有未显示的位是额外的 div 和
-
我没有看到
findJournals的 vuex 操作... -
它是来自 feathers-vuex 的服务模块的一部分 - 不过,这里有一个指向源代码的链接:link
标签: node.js vue.js socket.io vuex nuxt.js