2017-01-30 20 views
13

Trong một dự án phản ứng tự nhiên tôi đang tạo ra một đối tượng và sau đó chuyển hướng màn hình để trang chi tiết các đối tượng mới được tạo ra và tôi nhận được lỗi này:Khách hàng của Apollo đang cho tôi lỗi 'cửa hàng đã chứa id' - điều đó có nghĩa là gì?

thể Unhandled Promise chối (id: 0): Lỗi mạng: Lỗi cửa hàng: ứng dụng đã cố viết một đối tượng không có id được cung cấp nhưng cửa hàng đã chứa id của XYZ cho đối tượng này.

Tìm trong cơ sở dữ liệu tôi thấy rằng mục được tạo đúng cách ở bước trước. Điều hướng đến cùng một màn hình và mục thông qua danh sách (không phải sau khi tạo và chuyển hướng) có vẻ hoạt động tốt. Tôi có phải chờ đợi hoặc bằng cách nào đó thiết lập một số loại thời gian cho các cửa hàng apollo để ở lại chính xác?

Tôi đang sử dụng client apollo chuẩn @graphql ràng buộc/gói

GQL:

query getEvent($eventId: ID!) { 
    Event(id:$eventId) { 
     id 
     headline 
     photo 
     location 
     startTime 
     creator { 
     username 
     photo 
     } 
    } 
    } 
`; 

Và đây là một đoạn mã

@graphql(getEventGql,{ 
    options: ({route}) => { 
    console.log('route params', route.params); 
    return { 
     variables: { 
     eventId: route.params.eventId, 
     } 
    } 
    }, 
}) 

@connect((state) => ({ user: state.user })) 
export default class EventDetailScreen extends Component { 
... 

Trả lời

21

Bạn phải thêm id cũng đến creator trường:

query getEvent($eventId: ID!) { 
    Event(id:$eventId) { 
     id 
     headline 
     photo 
     location 
     startTime 
     creator { 
     id 
     username 
     photo 
     } 
    } 
    } 
+0

Đã xảy ra lỗi khi không cần id trong thuộc tính lồng nhau nhưng cần id ở cấp cơ sở, vì vậy câu trả lời này hữu ích. Tôi sẽ đánh giá cao một lời giải thích tại sao mặc dù. –

+0

@ ABCD.ca Tôi không chắc chắn 100%, nhưng có vẻ như một số kết quả bộ nhớ đệm đang diễn ra, vì vậy bạn phải cung cấp mã định danh duy nhất cho ứng dụng khách apollo để truy xuất nó. Làm cho một số ý nghĩa, nhưng tôi đã không có vấn đề này trước khi phát hành 1.0.0, vì vậy tôi đã tạm thời hoàn nguyên về 0.10.1 – ViggoV

Các vấn đề liên quan