私は Bookshelf.js と hbs を初めて使用します。次の点についてご協力いただければ幸いです。
Bookshelf.js モデルからのデータを使用して、handlebars.js ビュー フォームを事前に入力したいと考えています。
hbs では、Bookshelf の get メソッドを使用して目的の属性値を取得できません。例: {{user.get(age)}}
モデルを JSON に変換しましたが、{{user.age}} などの hbs の特定の json 属性を照会できません。
JSON
{"id":1,"fullName":"Mike","password":"password","email":"mike@email.com","age":38,"gender":"male","created_at":1432736718951,"updated_at":1432736718951}
モデルから属性値を抽出するためにヘルパーを作成する必要がありますか?
function getUserModel(req, res, next) {
User.forge({id: req.user})
.fetch()
.then(function(user){
req.model = user;
return next()
})
.catch(function(err){
debug("Error loading userId[%s]", req.user);
return next(err);
});
}
router.use(ensureAuthenticated)
.use(getUserModel);
router.get('/', function handlePhotoUploadGet(req, res, next) {
var callback = "http://" + req.headers.host + "/cloudinary_cors.html";
var params = {return_delete_token: true, callback: callback,
timestamp: cloudinary.utils.timestamp()};
var dataFormData = cloudinary.utils.sign_request(params);
res.render('photos/upload',
{ title: 'Photo upload',
cloudinary: cloudinary,
dataFormData: JSON.stringify(dataFormData),
user: req.model }
);
});
<input type="text" name="age" aria-label="age" value="{{user.age}}" placeholder="age" class="radius {{#if errors.invalidAttributes.fullName}}error{{/if}}" />
<input type="radio" name="gender" value="male" aria-label="Male" id="male" {{#if_equal user.gender 'male'}}checked{{/if_equal}}><label for="male">Male</label>