gpt4 book ai didi

ember.js - 尝试标准化和推送时,在调用 "Assertion Failed: Expected an object as ` `push` 时出现错误/`update` data`

转载 作者:行者123 更新时间:2023-12-04 11:23:18 25 4
gpt4 key购买 nike

在我的 Ember 应用程序中,我收到来自 websocket 的通知。当 websocket 收到一条消息(编码为 JSON)时,我想将它推送到商店中。
到目前为止,这是我的代码:

console.log('About to normalize', data);
var normalizedData = this.store.normalize('message', data);
console.log('About to push', normalizedData);
this.store.push('message', normalizedData);
data 和 normalizedData 最终是完全相同的值,就像这样:
{"message":{"id":1,"chatroom":1,"player":1,"content":"A message"}}
调用 push 方法会引发此错误:
Error: Assertion Failed: Expected an object as `data` in a call to `push`/`update` for message ,
but was {"message":{"id":1,"chatroom":1,"player":1,"content":"31232132113"}}
我不知道出了什么问题。当 Ember 从服务器获取特定消息时,它会收到相同类型的 JSON,并且 Ember Data 会很好地处理它。当它来自 websocket 并需要推送时,它会崩溃。
更新
我尝试使用 pushPayload,而不是像评论中建议的那样。它仍然不起作用。我收到这些消息:

"WARNING: Encountered "0" in payload, but no model was found for model name "0" (resolved model name using arkipel@serializer:-rest:.typeForRoot("0"))"

"WARNING: Encountered "0" in payload, but no model was found for model name "1" (resolved model name using arkipel@serializer:-rest:.typeForRoot("1"))"

"WARNING: Encountered "0" in payload, but no model was found for model name "2" (resolved model name using arkipel@serializer:-rest:.typeForRoot("2"))"


它上升到第 67 位,然后继续使用诸如 fmt、camelize、htmlSafe 之类的词……我很高兴数据只是一个表示 JSON 的字符串。

最佳答案

在我们在聊天中进行了一些调试后,我们发现了问题。我会在这里为其他人分享解决方案。

websocket 以字符串格式发送消息。所以data在 javascript 代码中是一个字符串,而不是一个 javascript 对象(JSON)。 Ember Data 期望我们推送一个 javascript 对象而不是一个字符串。

解决方案是先将来自 websocket 的响应解析为 javascript 对象,然后再将其推送到商店中,例如通过执行 JSON.parse(data) .

关于ember.js - 尝试标准化和推送时,在调用 "Assertion Failed: Expected an object as ` `push` 时出现错误/`update` data`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28377925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com