2014-11-04 16 views
8

Cho đến giờ tôi đã tìm kiếm tất cả các tài liệu liên kết và tài liệu Meteor nhưng không có gì có hiệu quả đối với tôi.Cách lấy tên người dùng hiện tại bằng Meteor

tôi đang tạo ra một tài khoản với

Accounts.createUser({ 
    username: username, 
    email: email, 
    password: password 
}); 

Và tôi biết rằng đang làm việc kể từ {{#if currentUser}} đang làm việc.

Tuy nhiên, tôi đang cố gắng để có được tên người dùng hiện đăng nhập của người dùng với một cái gì đó như

var username = Meteor.userId(); 
console.log(username); 

var username = Meteor.userId().username; 
console.log(username); 

Nhưng không phải đang làm việc, khi tôi sử dụng Meteor.userId() tôi chỉ nhận được một ngẫu nhiên (tôi đoán được mã hóa) chuỗi số và chữ cái, và khi tôi sử dụng Meteor.userId().username nó nói rằng nó không xác định.

Tất cả trợ giúp đều được hoan nghênh và xin lỗi vì ngữ pháp có thể khủng khiếp của tôi, Đó là rất muộn tại đây!

Trả lời

10

Meteor.userId() trả về _id của người dùng từ bộ sưu tập Mongo.users. Đó là lý do tại sao nó trông giống như một chuỗi vô nghĩa.

Bạn muốn Meteor.user(). docs là người bạn tốt nhất của bạn :)

+2

Xin lỗi, tôi quên đề cập đến mà tôi đã cố gắng đó đã. Nó trở về như không xác định. –

+0

Làm rõ: Chỉ cần "Meteor.user()" trả về với Object {_id: "2zWQoT7wWWhnXEWjY", email: Array [1]}. Nhưng "Meteor.user(). Username" trả về với undefined. –

+0

Nhà cung cấp đăng nhập của bạn có đặt tên người dùng không? 'tài khoản-mật khẩu' không, Twitter. –

1

Tôi nghĩ rằng Accounts.createUser -> username sẽ chỉ thiết lập Meteor.user(). Profile.name. Và nếu bạn muốn có Meteor.user() USERNAME có lẽ bạn nên sử dụng cũng Accounts.onCreateUser (https://docs.meteor.com/#/full/accounts_oncreateuser) và thêm lĩnh vực tên người dùng như:.

Accounts.onCreateUser(function (options, user) { 

    user.username = user.profile.name; 

    return user; 

}); 

Đó là cách mà vì Meteor.user tên người dùng() là. một trường tùy chỉnh trong trường hợp này.

9

Hãy thử với {{currentUser.username}}

+0

tôi đã sử dụng mã này và tên người dùng của tôi hiện đang hiển thị. nhưng khi tôi sử dụng mã dưới đây, nó không hiển thị địa chỉ email. đó là {{}} currentUser.email tôi đang đăng nhập bằng tên người dùng không gửi email cho nó tên đang hiển thị nhưng email không hiển thị. –

+0

Giải quyết nó cho bản thân tôi. –

+5

để chia sẻ nó với chúng tôi ... – henk

1

thêm cho khách hàng js

 
Accounts.ui.config({ 
    passwordSignupFields: 'USERNAME_AND_EMAIL' 
}); 
+0

Thx, rất hữu ích. Đây là tất cả những gì tôi đang tìm kiếm. – Narwhal

2

bạn phải sử dụng username: Meteor.user() trong .js nộp và trong việc sử dụng tập tin html {{username.profile.name}}

+0

Đây là phiên bản chính xác nếu bạn đang sử dụng OAuth (ví dụ: đăng nhập Facebook hoặc Google)! Xem [tài liệu] (https://guide.meteor.com/accounts.html#current-user) để biết thêm thông tin. – Domi

1

tôi đang làm nó như thế này :

  1. Bao gồm tài khoản pa ckage: meteor thêm tài khoản-mật khẩu
  2. nhập {Meteor} từ 'thiên thạch/sao băng'
  3. console.log ('Tên người dùng:' + Meteor.user(). tên người dùng);

Người dùng cần đăng nhập, nếu không Meteor.user() trả về giá trị rỗng.

Chỉnh sửa: Cũng lưu ý rằng Meteor.user() sẽ không khả dụng cho đến khi bộ sưu tập người dùng được gửi đến khách hàng.

0
Meteor.userId(); 

Mã này trả về một chuỗi là ID duy nhất của người dùng đã đăng nhập Meteor.userId() không phải là đối tượng người dùng toàn bộ. Vì vậy, bạn không thể thử bất kỳ tài sản nào. Để có tên người dùng hiện tại làm như sau: 1 -/Trong điều khiển sao băng

var uniqueID = Meteor.userId(); 
var username = Meteor.users.findOne({_id: uniqueID}).usename; 

2 -/Trong thiên thạch mẫu

{{ currentUser.username }} 
0

All in One!

Meteor.users.findOne({ _id: Meteor.userId() }).username 

Sau đó, bạn có thể quay trở lại giá trị cho biến, Nhà nước hoặc Session ..etc

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