1

I have an issue that I couldn't resolve for a quite long time. I'm making a shop using feathersJS as a backend api and Vue.js on the front and Mongodb. As I try to authenticate user on website, everything goes smoothly until "setUser" action fires and in auth service getters I get an error saying "Cannot read property 'idField' of undefined". I believe that I changed this property to "_id", wherever I could, but still this error occurs. Here are some screenshots, that may be helpful. This project is supposed to get me my first job in webDev so I would be eternally grateful for your support.

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,
};

auth service file:

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

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

1 Answers1

0

The issue here was the name of the service, which as a plugin in vuex was under a name of "users" not "api/users". The solution was to change in servicePlugin options nameStyle: "path" instead of "short"