以下是带有图像字段的样本模型
MyModel {
model:string
color:string
mymodel_image:string // <= here the image field
//is designed to be string like http://domian.com/api/images/dasfs05fsd44f,png
...
}
我面临的问题是在环回上创建(写入)此模型(带有imagefield)。 这是我到目前为止尝试的两种方法
另一种方法是使用多部分表单数据的单个http请求是我尝试这样做的 使用 操作挂钩上传图像,然后再保存 ,然后继续创建MyModel
MyModel.observe('before save',function (ctx, next) {
//do the file upload here and get file resource url as a result
//some thing like this :
Container.upload(data,options,function (err,fileObj) {
File.create({
name: fileInfo.name,
type: fileInfo.type,
container: fileInfo.container,
url: CONTAINERS_URL+fileInfo.container+'/download/'+fileInfo.name
} ...);
//update tee request body and execute the next
//callback(creating MyModel)
//like: req.body.mymodel_image = imageurl
next();
});
这种方法的问题是我无法 访问opration挂钩内的请求对象 (因为ctx参数不包含请求对象)。
我需要有关整个过程的建议,以及如何使用图像字段解决模型。
注意:我已经处理了this so question中提到的存储元数据。
答案 0 :(得分:0)
如何制作远程(自定义)端点,例如POST api/MyModel/upload
有些事情:
MyModel.prototype.upload = function (ctx,options,cb) {
if(!options) options = {};
Container.upload(data,options,function (err,fileObj) {
File.create({
name: fileInfo.name,
type: fileInfo.type,
container: fileInfo.container,
url: CONTAINERS_URL+fileInfo.container+'/download/'+fileInfo.name
}, function(err, file) {
//.. Create
});
};
MyModel.remoteMethod(
'upload',
{
isStatic: false,
description: 'Uploads a file',
accepts: [
{ arg: 'ctx', type: 'object', http: { source:'context' } },
{ arg: 'options', type: 'object', http:{ source: 'query'} }
],
returns: {
arg: 'fileObject', type: 'object', root: true
},
http: {path: '/MyModel/upload', verb: 'post'}
}
);