2017-02-26 1 views
0

Ich mag bewegen Gerät erstellt (Gruppe Gerät wird nur angezeigt, wenn eine Einrichtung ausgewählt wird) gelesen aber ich bin einen Fehler vonTypeerror: kann Eigenschaft ‚Status‘ undefinierten

TypeError: Cannot read property 'status' of undefined

auch immer in createGroupSuccess, updatedDevice-Objekt sollte übergeben werden, aber wenn ich in createGroupSuccess-Aktion trete, bekomme ich das ganze Geräteobjekt. Aus diesem Grund konnte ich die Gruppe im Geräteobjekt nicht hinzufügen, wenn ich versuche, mich zu bewegen.

function* createGroup(action) { 
    const device = yield select(selectDevice(), action); 
    const updatedDevice = { id: device.get('id') }; 
    // const group = fromJS(action.group); 
    // if (action.deviceId) { 
    // group = device.getIn(['device_group', action.deviceId]); 
    // group = group.mergeDeep(action.group); 
    // console.log('group inside if block', group); 
    // } 
    updatedDevice.device_group = action.group; 
    if (action.group) { 
    yield call(POST(`/device/${updatedDevice.id}`, createGroupSuccess, createGroupError, updatedDevice)); 
    } 
} 

function* rootSaga() { 
    yield takeEvery(CREATE_GROUP, createGroup); 
} 


export function createGroup(group, deviceId) { 
    return { 
    type: CREATE_GROUP, 
    group, 
    deviceId, 
    }; 
} 

export function createGroupSuccess(device) { 
    console.log('group in success', device); 
    return { 
    type: CREATE_GROUP_SUCCESS, 
    device, 
    }; 
} 

export function createGroupError(error) { 
    return { 
    type: CREATE_GROUP_ERROR, 
    error, 
    }; 
} 

case CREATE_GROUP: 
    return state 
    .set('loading', true) 
    .set('error', null); 

case CREATE_GROUP_SUCCESS: 
    console.log('success', action); 
    return state.set('loading', false).set('error', null) 
    .setIn(['devices', action.device.data.id, 'device_group', action.device.data]); 

mein Gerät Objekt ist

device:Object 
    data:Object 
    description: null, 
    device_group: null, 
    id: "7eb006d6db50479aa47f887da0d4f10e", 
    name: "Fan Speed" 

wo ich den Fehler gemacht habe in die Gruppe in dem Geräteobjekt zu schaffen, die ausgewählt wird, während die Gruppe zu schaffen?

UPDATE

export function POST(apiUri, onSuccess, onError, data) { 
return dataLoader(apiUri, onSuccess, onError, data); 
} 

export function dataLoader(apiUri, onSuccess, onError, data) { 
    return function*() { // eslint-disable-line func-names 
    const requestURL = `${API_BASE}${apiUri}`; 
    try { 
     let options; 
     if (data !== undefined) { 
     options = { 
      method: 'POST', 
      body: JSON.stringify(data), 
      headers: { 
      'Content-Type': 'application/json', 
      'X-CSRFToken': Cookies.get('csrftoken'), 
      'X-Requested-With': 'XMLHttpRequest', 
      }, 
     }; 
     } 
     const response = yield call(requestJSON, requestURL, options); 
     yield put(onSuccess(response)); 
    } catch (e) { 
     let error = null; 
     try { 
     error = yield call(() => e.response.json()); 
     } catch (_) { 
     error = { 
      errors: [{ 
      'code': e.response.status, 
      'msg': e.response.statusText, 
      }], 
     }; 
     } 
     yield put(onError(error)); 
    } 
    }; 
} 
+0

wo ist Ihre POST-Funktion? Ich nehme an, dass Sie den Antwortstatus darauf überprüfen. –

+0

@FazalRasel Ich habe meine Frage aktualisiert. createGroupSuccess-Aktion erhält auch nicht das richtige Argument. Mit Recht Argument, ich meine updatedDeviec Objekt sollte mit ID und device_group übergeben werden, ich glaube, aber das gesamte Gerät Objekt mit device_group Null wird – milan

Antwort

0

Versuchen Status ersetzt mit sendStatus

Verwandte Themen