我们将LoopBack用于REST API.我们注意到REST端点返回JSON的不一致.我们可以编写代码,但最好知道如何在我们的代码中正确解决它.问题是当标准REST端点返回JSON时,没有JSON对象ID.但是,当我们从直接执行的查询返回JSON时,我们必须指定一个对象ID.这是从标准LoopBack REST'get'调用返回的JSON:

当我们返回自己的JSON时,它似乎必须有一个ID:

这是我们如何返回自己的JSON(TypeScript):
var sql: string = "SELECT * FROM as_trialbalancelist"
// Execute the SQL
dbConn.query(sql, function (error: number, rows: any, fields: any) {
// Check for errors
if (error) {
console.log('ERROR: ' + error);
// TODO: Need better error return.
// res.send(error);
return;
}
callback(null, rows);
});
Dataview.remoteMethod(
'trialbalance',
{
returns: { arg: 'data' },
http: { verb: 'get' }
}
);
Run Code Online (Sandbox Code Playgroud)
当我们删除"returns:{arg:'data'}"时会导致错误.空白'arg'也会导致问题.
我在 node.js 中使用环回/强循环。我正在尝试在 count 方法中使用 where 子句进行分页。每当我尝试使用 where 子句时,它都会给我一个 mysql 语法错误,用于如下简单查询。
Ride.count({
where:{"id":20}
},function(err,totalCount){
if (err) {
log.info("Total error ", err);
fn(err);
}else {
log.info("Total count ", totalCount);
}
});
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误。
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '20' at line 1\n at Query.Sequence._packetToError (D:\Code\liftee\rest-services\node_modules\loopback-connector-mysql\node_modules\mysql\lib\protocol\sequences\Sequence.js:48:14)\n at Query.ErrorPacket (D:\Code\liftee\rest-services\node_modules\loopback-connector-mysql\node_modules\mysql\lib\protocol\sequences\Query.js:83:18)\n at Protocol._parsePacket (D:\Code\liftee\rest-services\node_modules\loopback-connector-mysql\node_modules\mysql\lib\protocol\Protocol.js:271:23)\n at Parser.write (D:\Code\liftee\rest-services\node_modules\loopback-connector-mysql\node_modules\mysql\lib\protocol\Parser.js:77:12)\n at Protocol.write (D:\Code\liftee\rest-services\node_modules\loopback-connector-mysql\node_modules\mysql\lib\protocol\Protocol.js:39:16)\n at Socket. (D:\Code\liftee\rest-services\node_modules\loopback-connector-mysql\node_modules\mysql\lib\Connection.js:92:28)\n …Run Code Online (Sandbox Code Playgroud) 我正在使用Loopback Connector REST(1.9.0)并有一个返回XML的远程方法:
Foo.remoteMethod
(
"getXml",
{
accepts: [
{arg: 'id', type: 'string', required: true }
],
http: {path: '/:id/content', "verb": 'get'},
returns: {"type": "string", root:true},
rest: {"after": setContentType("text/xml") }
}
)
Run Code Online (Sandbox Code Playgroud)
响应始终返回转义的JSON字符串:
"<foo xmlns=\"bar\"/>"
Run Code Online (Sandbox Code Playgroud)
代替
<foo xmlns="bar"/>
Run Code Online (Sandbox Code Playgroud)
请注意,响应的内容类型设置为text/xml.
如果我将Accept:标题设置为"text/xml",我总是将"Not Acceptable"作为响应.
如果我订
"rest": {
"normalizeHttpPath": false,
"xml": true
}
Run Code Online (Sandbox Code Playgroud)
在config.json中,然后我得到500错误:
SyntaxError: Unexpected token <
Run Code Online (Sandbox Code Playgroud)
我认为"xml:true"属性只是导致响应解析器尝试将JSON转换为XML.
如何在不解析的情况下让Loopback返回响应中的XML?问题是我将返回类型设置为"string"?如果是这样,Loopback会识别为XML的类型是什么?
我在使用远程方法的查找中使用简单的排序过滤器时遇到了麻烦:
/**
* This remote method exposes the meals history from the current logged in user
*/
Meal.listMeals = function(req, res, cb) {
Meal.find({
where: {patientId: req.accessToken.userId},
order: {mealDate: 'DESC'}
}, cb);
};
Meal.remoteMethod('listMeals', {
returns: {arg: 'meals', type: 'array'},
http: {path:'/list-meals', verb: 'get'},
accepts: [
{arg: 'req', type: 'object', http: {source: 'req'}},
{arg: 'res', type: 'object', http: {source: 'res'}}
]
});
Run Code Online (Sandbox Code Playgroud)
在上方,您可以看到我的remote / find实现,它在没有订单过滤器的情况下也可以正常运行。
订单{“ mealDate”:“ DESC”}无效
mealDate是我模型上的Date类型。
"properties": {
"mealDate": {
"type": "date",
"required": true,
"default": "Date.now"
}, …Run Code Online (Sandbox Code Playgroud) 如何在 nodejs 中为图像添加水印。我正在使用环回框架,我想为上传的每个图像添加水印,我尝试了几个图像处理模块,但无法实现水印。
我用代码尝试了图像水印库:
watermark.embedWatermark('./server/storage/images/img_hkd.jpg', { 'text': 'sample watermark' });
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:错误:生成识别 ENOENT
我已经使用生成了一个LoopBack项目和Angular4项目angular-cli.我的LoopBack项目在端口提供html文件,3000我的Angular4项目正在服务于4200.
现在我需要知道我是否可以在3000上提供这个角度应用,就像从LoopBack目录提供静态文件一样?
我想问的是,是否有可能使用LoopBack服务器来提供Angular4应用程序就像它服务Angularjs应用程序一样?
谢谢
我的环回应用程序中有一个持久模型,我想相应地自动添加createdAt和updatedAt属性为此模型实例。实现这一目标的简单方法是什么?
有没有办法loopback在livereload中有项目?避免停止node .命令并重新启动?
在环回的swagger规范中指定日期和时间的数据类型时,我遇到警告/错误。下面是我的环回user.json文件
"properties": {
"schedule": {
"type": "dateTime",
"required": true
},
}
Run Code Online (Sandbox Code Playgroud)
Swagger:跳过未知类型“dateTime”
请问我可以知道swagger中日期和时间的相关数据类型是什么吗?
我收到此警告'文件是一个 CommonJS 模块;当我需要 Express 时,它可能会在 VS Code 上转换为 ES6 模块。这是什么意思以及如何解决?? 这是警告的屏幕截图
loopbackjs ×10
node.js ×7
javascript ×3
express ×2
loopback ×2
strongloop ×2
angular ×1
json ×1
model ×1
npm ×1
sorting ×1
swagger ×1
swagger-ui ×1