vadimdemedes / mongorito

🍹 MongoDB ODM for Node.js apps based on Redux
1.38k stars 90 forks source link

Bug when setting any field after using 'Model.embeds()' #193

Closed Zizaco closed 7 years ago

Zizaco commented 7 years ago

@vadimdemedes

I've found another unexpected behavior in Model.embeds. Whenever we use set() for any other field, all properties of any embeded document are lost.

It's very easy to reproduce:

const Model = require('mongorito').Model

class Post extends Model {}
class Author extends Model {}
class Comment extends Model {}

Post.embeds('author', Author);
Post.embeds('comments', Comment);

var post = new Post()

post.set('author', {name: 'John Doe'})
post.get('author').get() // { name: 'John Doe' } <- It works
post.get('author').constructor // [Function: Author]

post.set('title', 'First!') // Whenever I set any other field
post.get('author').get() // {} <- It's empty now :dizzy_face:
post.get('author').constructor // [Function: Author]

It's also related to the issue #191