등록 된 사용자가 Loopback API를 통해 데이터베이스 (MySQL)에 내용을 POST 할 수 있도록하는 App을 작성했다고 가정합니다. 이제 게시 된 콘텐츠를 차단하여 다음과 같은 필드 일부를 채우는 방법은 무엇입니까? - 액세스 토큰을 기반으로 한 UserID? - 현재 날짜/시간?루프백에서 프로그래밍 방식으로 게시 된 컨텐츠 (예 : UserID 및 Date)에 데이터를 추가하는 방법은 무엇입니까?
답변
원격 후크를 사용하면 올바른 방법입니다. 다음은 레코드를 저장하기 전에 생성 된 날짜, 수정 된 날짜 및 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();
});
};
당신은 예를 들어 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();
});
});
은 내가 요청 헤더에 당신의 방법에 저장에 그 토큰 위의 고려했습니다.
안녕 에브라힘, 감사합니다! 나는 Loopback을 처음 사용했다. 귀하의 지시에 따라, 나는 내 모델의 이름으로 JS 파일을 만들어야한다. (기사를 보자) common/models/article.js 폴더에 넣어야한다. 그런 다음 파일에 module.exports로 둘러싸인 코드를 추가 한 다음 모델에서 내 모델 이름으로 Model이라는 단어를 바꿉니다. 또한 Access Token을 기반으로 UserID를 얻는 방법은 무엇입니까? –
@FabioNolasco 안녕하세요 Fabio. NP. 자신 만의 방식으로 모델을 만드는 것이 낫습니다. 'lb model' 명령으로 모델을 생성 할 수 있습니다. [이 지침] (https://loopback.io/doc/en/lb3/Getting-started-with-LoopBack.html)을 따르십시오. –
네, 맞습니다. 사용자 ID는 어떨까요? HTTP 헤더에서 제공된 액세스 토큰을 기반으로 그 순간에 그걸 가져 오는 방법은 무엇입니까? –
안녕하세요, Harpreet! 그것은 나를 위해 일했다! 정말 고맙습니다! –