2012-05-08 35 views
7

Theo tài liệu Meteor ....Meteor collection.insert callback hành

collection.insert(doc, [callback])

callback Chức năng

bắt buộc. Nếu có, được gọi với một đối tượng lỗi làm đối số đầu tiên và _id là đối số thứ hai.

... rồi sau đó xuống ...

Trên máy chủ, nếu bạn không cung cấp một callback, sau đó chèn khối cho đến khi cơ sở dữ liệu thừa nhận ghi, hoặc ném một ngoại lệ nếu có điều gì đã đi sai. Nếu bạn cung cấp một cuộc gọi lại, chèn trả về ngay lập tức. Khi quá trình chèn hoàn thành (hoặc không thành công), hàm gọi lại được gọi với các đối số lỗi và kết quả, giống như đối với các phương thức.

Lỗi, lỗi và _id hoặc lỗi và kết quả là gì? Tôi có Meteor.methods đang bắn callbacks của họ một cách chính xác với lỗi, kết quả có sẵn cho phạm vi.

Tôi chỉ có thể không nhận được gọi lại để làm việc một cách chính xác trên collection.insert (doc, [callback])

Dù bằng cách nào tôi không thể nhận cuộc gọi lại của tôi để đăng ký bất cứ điều gì?

function insertPost(args) { 
    this.unblock; 
    if(args) { 
    post_text = args.text.slice(0,140); 
    var ts = Date.now(); 
    Posts.insert({ 
     post: post_text, 
     created: ts 
    }, function(error, _id){ 
     // or try function(error, result) and still get nothing 
     // console.log('result: ' + result); 
     console.log('error: ' + error); 
     console.log('_id: ' + _id); //this._id doesn't work either 
    }); 

    } 
    return; 
} 

Tôi đang làm gì sai? Tôi đã thức dậy từ lúc 2 giờ sáng ... 6 giờ chiều múi giờ của tôi ... Tôi bị mờ, vì vậy tôi có thể (có lẽ) đang thiếu một điều gì đó khá rõ ràng.

Cheers Steeve

Trả lời

6

Đây là lỗi, được khắc phục trong bản phát hành tiếp theo. Bây giờ, nếu bạn cung cấp gọi lại tới insert, nó sẽ được gọi với các đối số errorresult, trong đó result là ID của tài liệu mới hoặc null nếu có lỗi.

+0

Đây có phải là lỗi không? Tôi đang đối mặt với cùng một vấn đề mà Steeve Cannon đang nhận được. Không thể nhận được bất cứ điều gì để bắn trong đối số thứ hai. – Rager

5

Vì đây là mã serverside bạn chỉ có thể làm:

var id = Posts.insert({data}); // will block until insert is complete 

và id sẽ có sẵn.

+0

cảm ơn bạn, đó là những gì tôi đã làm. Mặc dù tôi muốn làm nhiều hơn về một kiểu gọi lại trong tương lai. Họ nói rằng nó sẽ được tận dụng trong tương lai cho những người quan tâm. –