Я получаю странную ошибку. Я вхожу в форму, и она правильно выводит данные как объект и отправляет их через REST. Но я все еще получаю эту ошибку, когда я делаю это каждый раз. Я изменил primaryKey на "_id". Я попробовал «имя пользователя», но это дало мне совершенно другую ошибку и бесполезно.Ember: Assertion Failed: вы должны указать «id» для учетной записи сервера в объекте, переданном «push»
Object {username: "adas", password: "dasdsa", pincode: "dasdasdsadsad", centcoin: "0"}
ember.debug.js:19160 Error: Assertion Failed: You must include an 'id' for account in an object passed to 'push'
at EmberError (ember.debug.js:19083)
at assert (ember.debug.js:6778)
at Object.assert (ember.debug.js:18895)
at assert (ember-data.js:646)
at Class._pushInternalModel (ember-data.js:9725)
at Class.push (ember-data.js:9701)
at ember-data.js:10079
at Backburner.run (ember.debug.js:294)
at Class._adapterRun (ember-data.js:9950)
at ember-data.js:10074
defaultDispatch @ ember.debug.js:19160
dispatchError @ ember.debug.js:19143
onerrorDefault @ ember.debug.js:32916
trigger @ ember.debug.js:51624
(anonymous) @ ember.debug.js:52618
invoke @ ember.debug.js:990
flush @ ember.debug.js:1054
flush @ ember.debug.js:862
end @ ember.debug.js:176
run @ ember.debug.js:298
join @ ember.debug.js:318
run.join @ ember.debug.js:23770
hash.success @ ember-data.js:12808
fire @ jquery.js:3305
fireWith @ jquery.js:3435
done @ jquery.js:9242
(anonymous) @ jquery.js:9484
AccountAdapter.js
createRecord(store, type, snapshot) {
var data = {};
var serializer = store.serializerFor(type.modelName);
var url = this.buildURL(type, null, snapshot, 'createRecord');
//serializer.serializeIntoHash(data, null, snapshot, { includeId: false });
data = this.serialize(snapshot, {includeId: false});
console.log(data);
return this.ajax(url, "POST", { data: data });
},
urlForCreateRecord(type) {
return this._buildURL(type);
},
AccountSerializer.js
import AccountsSerializer from "store/ServerSerializer";
export default AccountsSerializer.extend({
primaryKey: "_id",
modelNameFromPayloadKey() {
return "serverAccount";
},
});
AccountsModel.js
import { attr,
Model } from "EmberData";
export default Model.extend({
username : attr("string"),
password: attr("string"),
pincode : attr("string"),
centcoin : attr("string"),
}).reopenClass({
toString() { return "accounts"; }
});
AccountsNewRoute.js
save() {
const store = get(this, "store");
var model = get(this, "controller.model");
store.createRecord("serverAccount", {
//id: get(model, "username"),
username: get(model, "username"),
password: get(model, "password"),
pincode: get(model, "pincode"),
centcoin: "0"
}).save().then((saved) => {
console.log("THIS IS SAVED ADD ACCOUNT", get(saved, "pincode"));
this.send("addAccount", saved);
return saved;
});
//let account = this.controller.get("model");
//let account = get(this, "controller.model");
console.log("THIS IS SAVED ADD ACCOUNT", get(model, "username"));
console.log("THIS IS SAVED ADD ACCOUNT", get(model, "password"));
console.log("THIS IS SAVED ADD ACCOUNT", get(model, "pincode"));
},
ServerSerializer.js
import {
RESTSerializer,
} from "EmberData";
export default RESTSerializer.extend({
isNewSerializerAPI: true,
primaryKey: "_id",
});
сервер должен ответить с этим:
{
"username": "dadsdsadsa",
"pincode": "fdsfdsfd",
"password": "fdsfdsfdsfds",
"createdAt": "2017-02-21T07:33:53.870Z",
"setUpdatedAt": "2017-02-21T07:33:53.870Z",
"_id": "twY0MFUeNf4UP7XO"
}
Ответ, который вы видите внизу, отличается от приведенного в сообщении об ошибке вверху. В любом случае, вы должны поделиться родительским классом сериализатора. Скорее всего, там что-то не так. –
Эй, я добавляю родительский класс serverSerializer.js. – dom