AlexCooper
30.09.2013, 14:55
Здравствуйте.
Столкнулся с небольшой проблемой, хочу в базу (Mongo) записать байтарей и потом обратно вытянуть. Но что-то видимо не дочитал. Есть ли опыт у кого-то в подобном?
front-end
var lic:Object = new Object();
lic.emei = emei.text;
lic.sign = MD5.hash(emei.text);
lic.desc = desc.text;
var ba:ByteArray = new ByteArray();
ba.writeObject(lic);
ba.compress();
var send:Object = new Object();
send.lic = lic;
send.ba = ba;
AMF.call('User/licHandler', callbackHandler, send);
back-end
public function licHandler($data) {
$data = Security::check($data);
// http://chimala.wordpress.com/2007/07/31/flex-20-sending-bytearray-to-amfphp/
$data['ba'] = new MongoBinData($data['ba']->data);
// пробовал и new MongoBinData($data['ba']) тогда вообще пусто
Security::mdb('licence')->insert($data);
return config::responser($data);
}
Всё на первый взгляд работает, но при получении обратно ByteArray
public function getLicenceList($data) {
Security::check($data);
return config::responser(Security::mdb('licence')->find());
}
private function licenceHandler(data:Object):void {
trace(data);
var byteArray:ByteArray = data['52494f9c8bbf0eb0b8bd9c0d']['ba']['bin'];
byteArray.uncompress();
var obj:Object = byteArray.readObject();
for ( var i in obj) {
trace(i+" >> "+obj[i]);
}
}
ловлю
TypeError: Error #1034: Type Coercion failed: cannot convert "xÚãâfäLI-Nfc762äLÍMÍdc742æ,ÎLÏcs420JN²43JL6µ4072MÌ
MRMÌ
Çɤ" to flash.utils.ByteArray.
Соответственно где-то я не дочитал.
Подскажите где может быть проблема. Может вытянув из MongoDB нужно "пересобрать" из BinData в ByteArray...
Столкнулся с небольшой проблемой, хочу в базу (Mongo) записать байтарей и потом обратно вытянуть. Но что-то видимо не дочитал. Есть ли опыт у кого-то в подобном?
front-end
var lic:Object = new Object();
lic.emei = emei.text;
lic.sign = MD5.hash(emei.text);
lic.desc = desc.text;
var ba:ByteArray = new ByteArray();
ba.writeObject(lic);
ba.compress();
var send:Object = new Object();
send.lic = lic;
send.ba = ba;
AMF.call('User/licHandler', callbackHandler, send);
back-end
public function licHandler($data) {
$data = Security::check($data);
// http://chimala.wordpress.com/2007/07/31/flex-20-sending-bytearray-to-amfphp/
$data['ba'] = new MongoBinData($data['ba']->data);
// пробовал и new MongoBinData($data['ba']) тогда вообще пусто
Security::mdb('licence')->insert($data);
return config::responser($data);
}
Всё на первый взгляд работает, но при получении обратно ByteArray
public function getLicenceList($data) {
Security::check($data);
return config::responser(Security::mdb('licence')->find());
}
private function licenceHandler(data:Object):void {
trace(data);
var byteArray:ByteArray = data['52494f9c8bbf0eb0b8bd9c0d']['ba']['bin'];
byteArray.uncompress();
var obj:Object = byteArray.readObject();
for ( var i in obj) {
trace(i+" >> "+obj[i]);
}
}
ловлю
TypeError: Error #1034: Type Coercion failed: cannot convert "xÚãâfäLI-Nfc762äLÍMÍdc742æ,ÎLÏcs420JN²43JL6µ4072MÌ
MRMÌ
Çɤ" to flash.utils.ByteArray.
Соответственно где-то я не дочитал.
Подскажите где может быть проблема. Может вытянув из MongoDB нужно "пересобрать" из BinData в ByteArray...