Comments (8)
Somehow, the document still open after the save() function.
update codes:
addWhiteboard () {
this._indexWb = this.whiteboards.push(Whiteboard.create());
};
addShape (data) {
var shape = Shape.create({
type: data.type
});
this._indexShape = this.whiteboards[this._indexWb-1].shapes.push(shape);
};
getShape () {
return this.whiteboards[this._indexWb-1].shapes[this._indexShape-1].toJSON();
}
addPoint (point) {
this.whiteboards[this._indexWb-1].shapes[this._indexShape-1].points.push(Point.create({
x: point.x,
y: point.y
}))
}
Now they are part of the document.
Am I doing something wrong?
from camo.
I am, at this time, not able to update none of the index. Even if I set them in those function, there are resetting.
from camo.
Hi Michael,
A couple quick notes:
- Make sure you're calling
.save()
on all updated objects and all new objects created with.create()
. I see in the code above that there are a few objects created (Whiteboard
,Shape
,Point
) that don't have.save()
called - Calling
.save()
on an object does not call.save()
on its referenced objects. Every new or updated object needs to have.save()
called explicitly
When you say "The problem I'm facing is, when I update an array inside another array, I can't access that document anymore", do you mean this line?
classroom.whiteboards[classroom.whiteboards.length-1].shapes.push(shape);
I'll do some testing and see if I can find any problems. It might be helpful if you could post the code for the Classroom
and Whiteboard
classes. You don't have to post all of it, at least the relevant parts of the schema.
Thanks.
from camo.
Whiteboard, Shape and Point are EmbeddedDocument. I tried to save them, but it throws "save()" it's undefined.
class Classroom extends Document {
constructor() {
super();
this.className = {
type: String,
required: true
};
this.date = {
type: Date,
default: Date.now()
};
this.whiteboards = {
type: [Whiteboard],
default: [Whiteboard.create()]
};
this._indexWb = 0;
this._indexShape = -1;
}
get indexWb () {
return this._indexShape;
}
set indexWb (value) {
console.log('indexWb: '+value);
this._indexShape = value;
}
get indexShape() {
return this._indexShape;
}
set indexShape(value) {
console.log('indexShape: '+value);
this._indexShape = value;
}
addWhiteboard () {
this.indexWb = this.whiteboards.push(Whiteboard.create());
};
addShape (data) {
var shape = Shape.create({
type: data.type
});
this.indexShape = this.whiteboards[this.indexWb].shapes.push(shape);
};
getShape () {
return this.whiteboards[this.indexWb].shapes[this.indexShape].toJSON();
}
addPoint (point) {
this.whiteboards[this.indexWb].shapes[this.indexShape].points.push(Point.create({
x: point.x,
y: point.y
}))
}
}
This is the current class of the Classroom document. I change things to test. There is no way to update either of the _index, not even with the index get and set (BTW, because of the getters and setters being publics, now the document save them).
I will just move on and use standard Document. I think that may solve the problem. I'll let you know. Thanks!
from camo.
Ah, okay, I didn't realize Whiteboard, Shape and Point were EmbeddedDocuments. That makes a lot more sense.
I think you may have found an issue with saving nested arrays, so I'll look in to it.
Thanks!
from camo.
I think it maybe related to a nested arrays of EmbeddedDocuments. I'm unable right now to test it. But next week or so, I'll help you properly reporting a playable scenario.
from camo.
Found the issue. You're right, there is a problem saving/loading deeply nested EmbeddedDocument
s. I'll be committing the fix shortly.
Thanks for pointing this out!
from camo.
Glad I could help.
from camo.
Related Issues (20)
- Is camo still maintained? HOT 1
- Why can't there just be an upsert method on Document?
- [TypeError: Class constructor Document cannot be invoked without 'new'] when using ts-node
- Support for non-required embedded documents
- Support for reference document inside embedded document
- Info about the project HOT 3
- batch insert
- Pull request for use with react-native-local-mongodb? HOT 1
- optional modules not optional HOT 1
- RangeError: Maximum call stack size exceeded when trying to write to non-existent field HOT 1
- find() not returning all results HOT 1
- Hacktoberfest HOT 1
- Awesome Idea, Need some features HOT 1
- hasMany, hasOne, belongsTo support
- Support for "mongodb+srv" connection URL
- Double request needed to delete operation
- MongoDB collation
- Marpat: find({}, {population: true}) doesn't work HOT 1
- MongoDB's new Options format
- Raw query support
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from camo.