2013-04-10 73 views
13

如果沒有用戶存在,我想創建一個管理員用戶。我試了一下在服務器上的文件夾如何在流星上創建默認用戶?

Meteor.startup(function() { 
    if(!Meteor.users.find().count()) { 
    var options = { 
     username: 'admin', 
     password: 'default-password', 
     email: '[email protected]' 
    }; 
    Accounts.createUser(options); 
    } 
}); 

這裏面一個js文件是錯誤的流星顯示控制檯

Error 
    at app/packages/livedata/livedata_common.js:143:26 
    at /Users/camilo/Documents/Proyectos/IM/interno/.meteor/local/build/server/server.js:282:7 
    at Array.forEach (native) 
    at Function._.each._.forEach (/Users/camilo/.meteorite/meteors/meteor/meteor/0ffea1c4c308ed24906984f99b13b8fca5a0956c/dev_bundle/lib/node_modules/underscore/underscore.js:79:11) 
    at run (/Users/camilo/Documents/Proyectos/IM/interno/.meteor/local/build/server/server.js:227:7) 
=> Exited with code: 1 

我做錯了或這是一個錯誤的流星嗎?

我使用流星0.6.1和0.9.9的Node.js

+0

還有一個類似的問題http://stackoverflow.com/questions/11629759/how-can-i-create-users-server-side在流星,但並沒有解決這個問題。 – Camilo 2013-04-10 21:10:48

+0

您是否擁有accounts-password和accounts-base軟件包? – Akshat 2013-04-10 21:21:58

+0

是的。我可以從客戶端,登錄,註銷等創建用戶。 – Camilo 2013-04-10 22:01:05

回答

0

一段時間後,我再次測試上面的代碼與流星0.6.4和它的工作沒有問題。可能是流星0.6.1的一個問題,或者我意外地在代碼的某個地方解決了這個問題。

5

這種方式爲我工作:

var users=[ 
    {email: "[email protected]", username: "gra", name: "gra", roles:['admin']} 
]; 
_.each(users, function(user){ 
    Accounts.createUser({ 
     email: user.email, 
     password: "admin", 
     profile: {username: user.username}, 
     profile: {name: user.name}, 
     roles: user.roles 
    }); 
}); 
+0

我得到了與您的代碼相同的錯誤。你把它放在服務器或客戶端? – Camilo 2013-04-11 14:02:36

+0

我放在服務器端 – lfergon 2013-04-11 16:58:13

1

我從來沒有發現任何問題,創造對流星的用戶。 這是我的CoffeeScript代碼:

Meteor.startup -> 
    if Meteor.users.find.count() is 0 
    options = 
     email: '[email protected]' 
     password: 'pass' 
    Accounts.createUser(options) 
32

我會建議一個/server/fixtures.js文件。在這個文件中,你可以添加你的默認用戶創建:

if (Meteor.users.find().count() === 0) { 
    Accounts.createUser({ 
     username: 'username', 
     email: 'email', 
     password: 'asdfasdf', 
     profile: { 
      first_name: 'fname', 
      last_name: 'lname', 
      company: 'company', 
     } 
    }); 
} 
+2

這段代碼每次運行Meteor時都會運行至少一次?潛在的每個線程一次?我想它想包裹在Meteor.startup()調用中,因爲我不認爲'fixtures.js'作爲文件名具有任何特殊意義。 – chmac 2014-11-28 15:47:08

+2

是的,每次啓動時都會運行。包裹在Meteor.startup()中不會受到傷害,並且可以提供一些防止意外運行的保險,我想。不,文件名fixtures.js沒有意義。我想我可能從Discover Meteor書中得到了這個名字? – SpacePope 2015-09-09 19:14:48

相關問題