如何在FeathersVuex身份验证服务中设置idField

时间:2020-05-20 12:29:15

标签: mongodb vue.js vuex feathersjs feathers-authentication

我有一个问题,很长一段时间都无法解决。 我正在使用feathersJS作为后端api以及前端和Mongodb上的Vue.js进行销售。当我尝试在网站上对用户进行身份验证时,一切都会顺利进行,直到触发“ setUser”操作为止,并且在身份验证服务获取器中,我收到一条错误消息:“无法读取未定义的属性'idField'”。我相信我会尽可能地将此属性更改为“ _id”,但仍然会发生此错误。以下是一些屏幕截图,可能会有所帮助。这个项目应该让我获得webDev的第一份工作,因此,我将永远感谢您的支持。

AddItem action in vuex

setUser action in vuex

Feathers-client.js:

import feathers from '@feathersjs/feathers';
import socketio from '@feathersjs/socketio-client';
import auth from '@feathersjs/authentication-client';
import io from 'socket.io-client';
import { iff, discard } from 'feathers-hooks-common';
import feathersVuex from 'feathers-vuex';

const socket = io('http://localhost:3030', { transports: ['websocket'] });

const feathersClient = feathers()
  .configure(socketio(socket))
  .configure(auth({ storage: window.localStorage, debug: false }))
  .hooks({
    before: {
      all: [
        iff(
          context => ['create', 'update', 'patch'].includes(context.method),
          discard('__id', '__isTemp'),
        ),
      ],
    },
  });

export default feathersClient;

// Setting up feathers-vuex
const {
  makeServicePlugin, makeAuthPlugin, BaseModel, models, FeathersVuex,
} = feathersVuex(
  feathersClient,
  {
    idField: '_id', // Must match the id field in your database table/collection
    whitelist: ['$regex', '$options'],
  },
);

export {
  makeAuthPlugin, makeServicePlugin, BaseModel, models, FeathersVuex,
};

身份验证服务文件:

import { makeAuthPlugin } from '../../feathers-client';

export default makeAuthPlugin({
  userService: 'api/users',
  entityIdField: '_id',
});

1 个答案:

答案 0 :(得分:0)

这里的问题是服务的名称,作为vuex中的一个插件,其名称为“用户”而不是“ api /用户”。解决方案是更改servicePlugin选项nameStyle:“ path”而不是“ short”