in jones-ndb/impl/ndb/NdbOperation.js [429:481]
DBOperation.prototype.buildOpHelper = function(helper) {
var code = this.opcode;
var isVOwrite = (this.values && adapter.impl.isValueObject(this.values));
var error = null;
/* All operations but insert use a key. */
if(code !== 2) {
allocateKeyBuffer(this);
encodeKeyBuffer(this);
helper[OpHelper.key_record] = this.index.record;
helper[OpHelper.key_buffer] = this.buffers.key;
}
/* If this is an update-after-read operation on a Value Object,
DBOperationHelper only needs the VO.
*/
if(isVOwrite) {
error = adapter.impl.prepareForUpdate(this.values);
if(error) {
this.encoderError = new DBOperationError().fromSqlState(error);
} else {
helper[OpHelper.value_obj] = this.values;
}
}
else {
/* All non-VO operations get a row record */
helper[OpHelper.row_record] = this.tableHandler.resultRecord;
/* All but delete get an allocated row buffer, and column mask */
if(code !== 16) {
allocateRowBuffer(this);
helper[OpHelper.row_buffer] = this.buffers.row;
helper[OpHelper.column_mask] = this.columnMask;
/* Read gets a lock mode, and possibly a blobs array.
writes get the data encoded into the row buffer. */
if(code === 1) {
helper[OpHelper.lock_mode] = constants.LockModes[this.lockMode];
if(this.tableHandler.numberOfLobColumns) {
this.blobs = [];
}
}
else {
this.encoderError = encodeRowBuffer(this);
}
}
}
helper[OpHelper.opcode] = code;
helper[OpHelper.is_value_obj] = isVOwrite;
helper[OpHelper.blobs] = this.blobs;
helper[OpHelper.is_valid] = this.encoderError ? false : true;
};