Closed blainehansen closed 4 years ago
Can you create some test for this?
Sure I'd love to, how would you like me to do so? A fiddle?
Alright I'm working on one right now.
http://jsfiddle.net/faichenshing/Ember/151/ This is the best I can do. With such an interconnected system I'm not sure how to get it to work. The console throws a bunch of syntax errors about the adapter files. I've externally linked to the dest directory in my copy of the project, https://github.com/blainehansen/ember-couchdb-kit, where I've made the changes I've talked about to serializeBelongsTo.
Can you create some jasmine spec?
or fail tests for belongsTo ?
I've never done jasmine before, so I could try but I'd have to figure that all out first :/ I could do a pastebin of all the console outputs I get? Would that be helpful?
I'm trying to push my entire project to github. I'm having trouble. Excuse my inexperience :/
Here's a pastebin. Still working on pushing my project. http://pastebin.com/v4mb3PJ2
create jasmine test, and i am fixed this bug if it reproduce in test.
Here's the whole project. https://github.com/blainehansen/studio/tree/master
I'll get working on the Jasmine, but there's no telling how long it will take me.
I figured out the problem. Basically the belongsTo
object in serializeBelongsTo
wasn't really resolved by the time it was being referenced, which I found out by querying isFulfilled
. So I implemented by saving side this way:
function saveOn (target, attribute) {
target.addObserver(attribute, function () {
if (target.get(attribute)) {
console.log("Inside with %@".fmt(attribute));
target.removeObserver(attribute);
Ember.run.once(target, function() {
target.save();
});
}
});
};
customerSignUp: function () {
var model = this.get('model');
var customer = this.get('store').createRecord('customer', {
description: 'Why hello sir'
});
customer.save().then(function () {
model.set('customer', customer);
customer.set('user', model);
saveOn(customer, 'user.isFulfilled');
saveOn(model, 'customer.isFulfilled');
});
}
Now everything works like a charm. It might be a good idea for serializeBelongsTo
to take this into account though. This line: console.log(Ember.get(belongsTo, 'isFulfilled'));
was coming up false
in my case. There was just a race condition of some sort between the creation of the record and it's serialization!
@blainehansen Is there still an issue for you?
When running the following from the
UserController
on Google Chrome, withember-couchdb-kit-0.9
, Ember Datav1.0.0-beta.3-56-g8367aa5
, and Emberv1.0.0
:with these models:
neither the user nor the customer has their relationship set properly (the user has
null
and the customer has<computed>
, rather than some sort of<EmberPromiseObject>
). This only happens when the object in question is persisted. If thesave()
calls are omitted, both have correctly set relationships, but of course the database hasn't been updated with this information. Whenever the saves happen, the relationships are overwritten with empty entries.I've changed my copy of
serializeBelongsto
to the following:console.log(Ember.get(belongsTo, attribute));
returnsundefined
, which I've tried to change toconsole.log(Ember.get(Ember.get(belongsTo, 'content'), attribute));
sinceconsole.log(belongsTo);
told me theid
attribute was hidden inside acontent
object. Attached is a screenshot showing what I mean. The change doesn't fix the problem though, and I keep gettingundefined
.console.log(json);
returnsObject {description: "Why hello sir", user: undefined}