I am using node and i have used .
babel-node
"start": "nodemon --exec babel-node --presets es2015 index.js"
My spread syntax is not working as expected. Here is my code.
export const login = async (parentValue, { email, password }) => {
try {
const user = await User.findOne({
email
});
console.log(user);
if (!user.authenticateUser(password)) {
throw new Error('Wrong password');
}
const dummyObject = {
...user
};
console.log({ dummyObject });
return { ...user };
} catch (e) {
console.log(e);
throw new Error(e.message);
}
};
The line where i have used console.log(user)
, it works fine.
It returns
{
id: xxx,
name: xxxx
}
and I am getting unexpected data on console.log(dummyObject)
;
here is what i get.
{ jojo:
{ '$__':
InternalCache {
strictMode: true,
selected: {},
shardval: undefined,
saveError: undefined,
validationError: undefined,
adhocPaths: undefined,
removing: undefined,
inserting: undefined,
saving: undefined,
version: undefined,
getters: {},
_id: 5c798295f53323b34cabf1ca,
populate: undefined,
populated: undefined,
wasPopulated: false,
scope: undefined,
activePaths: [Object],
pathsToScopes: {},
cachedRequired: {},
session: undefined,
ownerDocument: undefined,
fullPath: undefined,
emitter: [Object],
'$options': [Object] },
isNew: false,
errors: undefined,
_doc:
{ _id: 5c798295f53323b34cabf1ca,
fullName: 'sarmad',
password: '$2a$10$c.XDX75ORXYA4V/hUXWh.usVf2TibmKfY.Zpu3cpTssFaYvsGyhte',
email: '[email protected]',
createdAt: 2019-03-01T19:05:57.454Z,
updatedAt: 2019-03-01T19:05:57.454Z,
__v: 0 },
'$init': true } }
Am I doing something wrong? Technically it should return the user object NOTE: I don't want to use Object.assign