2017-03-07 8 views
0

등록 된 사용자가 Loopback API를 통해 데이터베이스 (MySQL)에 내용을 POST 할 수 있도록하는 App을 작성했다고 가정합니다. 이제 게시 된 콘텐츠를 차단하여 다음과 같은 필드 일부를 채우는 방법은 무엇입니까? - 액세스 토큰을 기반으로 한 UserID? - 현재 날짜/시간?루프백에서 프로그래밍 방식으로 게시 된 컨텐츠 (예 : UserID 및 Date)에 데이터를 추가하는 방법은 무엇입니까?

답변

1

원격 후크를 사용하면 올바른 방법입니다. 다음은 레코드를 저장하기 전에 생성 된 날짜, 수정 된 날짜 및 userId를 추가하는 원격 후크의 예입니다. 생성 된 date 및 ownerId는 새 레코드 인 경우에만 설정되고 업데이트 호출시 수정 날짜가 설정됩니다.

일반/모델/model.js

'use strict'; 

module.exports = function(Model) { 
    // Set dates and userId before saving the model 
    Model.observe('before save', function setAutoData(context, next) { 
     if (context.instance) { 
      if(context.isNewInstance) { 
       context.instance.created = Date.now(); 
       context.instance.ownerId = context.options.accessToken.userId; 
      } 
      context.instance.modified = Date.now(); 
     } 
     next(); 
    });  
}; 
+0

안녕하세요, Harpreet! 그것은 나를 위해 일했다! 정말 고맙습니다! –

0

당신은 예를 들어 remote hooks

사용하여 클라이언트에서 오는 데이터를 가로 챌 수 있습니다

Model.CustomCreate = function(data, cb){ 
    Mode.create(data, cb); 
}; 

Model.beforeRemote('CustomCreate', function(ctx, instance, next){ 
    ctx.args.data.changeDate = new Date(); 
    var token = ctx.req.headers.token; // or however you set that 
    app.models.User.findByToken(token, function(err, account){ 
    if(err) return next(err); 
    ctx.args.data.userId = account.id; 
    next(); 
    });  
}); 

은 내가 요청 헤더에 당신의 방법에 저장에 그 토큰 위의 고려했습니다.

+0

안녕 에브라힘, 감사합니다! 나는 Loopback을 처음 사용했다. 귀하의 지시에 따라, 나는 내 모델의 이름으로 JS 파일을 만들어야한다. (기사를 보자) common/models/article.js 폴더에 넣어야한다. 그런 다음 파일에 module.exports로 둘러싸인 코드를 추가 한 다음 모델에서 내 모델 이름으로 Model이라는 단어를 바꿉니다. 또한 Access Token을 기반으로 UserID를 얻는 방법은 무엇입니까? –

+0

@FabioNolasco 안녕하세요 Fabio. NP. 자신 만의 방식으로 모델을 만드는 것이 낫습니다. 'lb model' 명령으로 모델을 생성 할 수 있습니다. [이 지침] (https://loopback.io/doc/en/lb3/Getting-started-with-LoopBack.html)을 따르십시오. –

+0

네, 맞습니다. 사용자 ID는 어떨까요? HTTP 헤더에서 제공된 액세스 토큰을 기반으로 그 순간에 그걸 가져 오는 방법은 무엇입니까? –