2016-09-05 2 views
0

"token"オブジェクトをPOST/MyObjectに渡したいと思います。これを行う最も簡単な方法は、MyObject.jsonにプロパティとして追加することです。問題は、このトークンが永続化されていないことです(長続きせず、保存する必要もありません)。モデルプロパティをstrongloopのデータソースから隠すことはできますか?

私は、POSTのために、この問題を回避する方法を考え出し:

MyObject.beforeRemote('create', function (context, unused, nextFn) { 
    var token = context.args.data.token; 

    //We have to delete this so it doesn't try to put it in the database 
    delete context.args.data.token; 
    nextFn(); 
}); 

しかし、コードがクラッシュし、私がGETを行うとき。

私は最初のパラメータとしてMyObjectにして、新しいリモートメソッドに2番目のパラメータとして、それを追加しようとしたが、3時間strongloopと格闘し、それを表示するには何も持っていない後のI/

はあきらめましたプロパティを追加してノードで使用できるようにする方法はありますが、永続化されないようにする方法はありますか?

+0

なぜプロパティに追加する必要がありますか?あなたの遠隔メソッドはどうですか? –

+0

私はそれを使用して、そのトークンを必要とする第三者のライブラリを使って余分な作業をしているからです。トークンが有効な場合は、トークンなしでMyObjectをデータベースに保持します。 私はそれを必要とするので、POSTのモデルスキーマに表示されるようにプロパティに追加しています。 – anonymouse

+0

スキーマでドキュメントを表示する場合は、別の方法があります。たとえば、メソッドスキーマの表現のためだけにデータソースのないモデルを作成することができます –

答えて

1

表現のためだけにモデルを定義できます。

//MyObjectInput.json 
{ 
    "name": "MyObjectInput", 
    "base": "Model", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "name": { 
     "type": "string", 
     "required": true 
    }, 
    "token": { 
     "type": "string" 
    } 
    ... 
    }, 
    "validations": [], 
    "relations": {}, 
    "acls": [], 
    "methods": {} 
} 


//MyObject.json 
{ 
    "name": "MyObject", 
    "base": "PersistedModel", 
    "strict": true, 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "name": { 
     "type": "string", 
     "required": true 
    } 
    ... 
    }, 
    "validations": [], 
    "relations": {}, 
    "acls": [], 
    "methods": {} 
} 

MyObject.jsonsctrictキーにご注意ください。定義されたすべてのプロパティを永続化する必要があることを示します。今はtokenMyObjectの定義にないため、永続化されません。

//MyObject.js 
MyObject.remoteMethod(
     'create', { 
      accepts: [ 
       { 
        arg: 'data', 
        type: 'MyObjectInput', 
        http: {source: 'body'} 
       } 
      ], 
      returns: { 
       arg: 'result', 
       type: 'object', 
       root: true 
      }, 
      http: { 
       path: "/create", 
       verb: 'post', 
       status: 201 
      } 
     } 
    ); 
+0

ありがとう!それは賢明な回避策です。 – anonymouse

関連する問題