2016-10-20 12 views
1

のない私は、他のアプリは新しいデータを挿入(作成)できるようにするAPIを作成したいです。しかし、これまで私が試したのは、「ユーザーIDが必要です」というエラーメッセージが表示されず、新しいデータを挿入するときにログインユーザーが見つからないためです。パスワードなしで新しいデータを挿入することは可能ですか?アカウントのパスワードパッケージを使用している場合や、この作業を可能にする方法があれば、サーバー側からログインする方法はありますか?サーバー上の流星サーバーの挿入データのログイン

コード

Picker.route('/createFood/:title', function(params, req, res, next) { 
console.log('-> params : ',params); 
let username = (new Date()).getTime().toString(); 
function createFood() { 
    Fiber(function() { 
    console.log("-> username : ",username); 
    let acc = Accounts.createUser({ 
     username: username, 
     email: username +'@foodie.com', 
     password: username 
    }); 
    if (acc) { 
     console.log("-> acc : ",acc); 
     // Meteor.call("setUserId", acc); 
     Menus.insert({ 
     title: params.title, 
     }, function(err, foodId) { 
     console.log("-> abs : ",Meteor.absoluteUrl()); 
     console.log("-> err : ",err.message); 
     console.log("-> foodId : ",foodId); 
     let code, result; 
     if (err) { 
      code = 500; 
      result = { 
      error: err.message 
      } 
     } else { 
      code = 200; 
      result = { 
      foodId: foodId, 
      } 
     } 
     res.setHeader('Content-Type', 'application/json'); 
     res.statusCode = code; 
     res.end(JSON.stringify(result)); 
     }) 
    } 

    }).run(); 
} 
if (params.title) 
    createFood(); 
}); 

コード食べ物モデルは、ここで

if (Meteor.isServer) { 
Menus.allow({ 
    insert: function() { 
    return true; 
    }, 
    update: function() { 
    return true; 
    }, 
    remove: function() { 
    return true; 
    }, 
    fetch: ['foodId'], 
}); 
Menus.after.insert((userId, doc) => { 
.... 
}) 
} 
+0

ちょっと私は同じ問題にしています、解決策はありますか? – Gobliins

+0

@Gobliins実は私の問題は、(?:「ゴーストユーザー」 ''はuserId userIdを同じように、そのスキーマファイルに条件を使用している場合はユーザーのログイン名と私の一時的な解決策は、その時点で存在しない場合、この値はnullになります)自動入力値のuserIdに位置しています。おそらく、isInsertまたはisSetのときに、userIdがautoValueまたは必須フィールドとして使用されていないことを確認することができます。この役立つことを願っています。 –

+0

それでは、私の問題は少し違っていました。 UserId(Meteor製)が定義されていなかったCollectionHooksから来ました。 – Gobliins

答えて

0

のuserIdの所有者、あなたがログインせずにデータベースに挿入できない理由はありませんがあります。あなたがドン」あなたがしたくない場合は、アカウントパッケージを含める必要があります。

あなたの現在のコードは、ユーザーが存在しない限り、あなたはこれにそれを簡素化することができます挿入しません...

function createFood() { 
     Menus.insert({ 
     title: params.title, 
+0

返事に感謝、それは私が:) を探している解決策ではないのですが、私は自動入力値のユーザーIDが主な問題であることが最近それを見つけました –

関連する問題