我想用mongoose加密类似于这个例子的字段:https://gist.github.com/kljensen/7505729
上面链接中的代码将字段映射到自定义decrypt()函数get和encrypt()函数set.
这会导致纯文本值在保存时被加密,并在检索时被解密.
如何在Loopback中覆盖模型属性的getter和setter?
我正在尝试修改create的http状态代码.
POST /api/users
{
"lastname": "wqe",
"firstname": "qwe",
}
Run Code Online (Sandbox Code Playgroud)
返回200而不是201
我可以为错误做些类似的事情:
var err = new Error();
err.statusCode = 406;
return callback(err, info);
Run Code Online (Sandbox Code Playgroud)
但是我找不到如何更改create的状态代码.
我找到了创建方法:
MySQL.prototype.create = function (model, data, callback) {
var fields = this.toFields(model, data);
var sql = 'INSERT INTO ' + this.tableEscaped(model);
if (fields) {
sql += ' SET ' + fields;
} else {
sql += ' VALUES ()';
}
this.query(sql, function (err, info) {
callback(err, info && info.insertId);
});
};
Run Code Online (Sandbox Code Playgroud) 我有关系数据库的用户模型.
每个用户都可以拥有"chiefId"为FK的"用户".
"relations": {
"users": {
"type": "hasMany",
"model": "User",
"foreignKey": "chiefId"
},
}
Run Code Online (Sandbox Code Playgroud)
我可以查询每个主要用户的相关用户,如下所示:
GET /users?filter={"include":"users"}
Run Code Online (Sandbox Code Playgroud)
但它返回完整的用户对象.
我正在使用自定义模型并尝试使用find方法在循环中过滤它.例如,如下所示
for i = 0 to n
{
var u = User.find( where { name: 'john'});
}
Run Code Online (Sandbox Code Playgroud)
它不起作用.
另外,如果我使用以下内容
for i = 0 to n
{
User.find( where { name: 'john'}, function(u) {... } );
// How do I call the code for further processing?
}
Run Code Online (Sandbox Code Playgroud)
有没有办法同步调用find方法?请帮忙.
谢谢
我正在尝试设置一个示例强循环应用程序,当我尝试使用/ explorer尝试使用post api时,我收到以下错误.
"Cannot call AccessToken.findById(). The findById method has not been setup.. The PersistedModel has not been correctly attached to a DataSource."
Run Code Online (Sandbox Code Playgroud)
我跑过并安装了slc loopback:acl,其中包含以下设置:
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "admin",
"permission": "ALLOW"
}
],
Run Code Online (Sandbox Code Playgroud)
但是,这些设置似乎不适用于我的模型.
我们有一个Web应用程序,它使用Strongloop的LoopBack作为API和后端,以及前端的Angular,Cordova用于打包移动.来自Cordova的Web应用程序和iOS目标运行良好,但是当我们尝试为Android设备构建时,应用程序服务器无法从设备访问.更具体地说,在加载客户端应用程序并尝试登录后,设备向我的API发出POST但从未收到响应(据我所知,请求从未真正命中过服务器).
这是我到目前为止所尝试的:
access设置为origin="*"Content-Security-Policy在我的(单页)应用程序的index.html中设置了元标记,允许远程网络INTERNET在Android Manifest中正确设置了权限lb-services.jsAngular服务具有正确的API地址由于我能够在没有任何问题的情况下使用Cordova在iOS上运行我的应用程序,我认为我的Android配置必须有特定的东西.我确实遇到了一个单独的问题,即安装的插件与最新的Cordova不兼容,但删除该插件似乎已经解决了这个问题.为Android构建有什么不同可以防止这种情况发生?
编辑:
我已经转而使用Phonegap Build,希望这将是一个更简单的工作流程,但我仍然看到相同的问题..这是我正在做的白名单/ CORS配置:
index.html中的元标记:
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'self' 'unsafe-inline'; script-src * 'self' 'unsafe-inline' 'unsafe-eval'">
config.xml(Phonegap Build,可识别信息已删除):
<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" id="..." version="1.0.0">
<name ... />
<description ... />
<author ... />
<icon src="icon.png" />
<gap:splash src="splash.png" />
<preference name='phonegap-version' value='cli-5.1.1' />
<gap:plugin name="com.indigoway.cordova.whitelist.whitelistplugin" version="1.1.1" />
</widget>
一般来说,我是Swift和iOS开发的新手。我正在测试和学习如何使用远程服务器api。尝试进行身份验证时,我从Strongloop(Loopback)api中获取了JSON,而我尝试使用的解析过程出错:
错误域= NSCocoaErrorDomain代码= 3840“无法完成操作。(可可错误3840。)”(无值。)UserInfo = 0x7fd623e38870 {NSDebugDescription =无值。}
这是字符串中的返回值,很明显,我从Loopback,身份验证令牌,ttl,date和userId获得了正确的JSON响应:
{“ id”:“ BHzKnjrbUPn9KSC1GegQTNHJFNwfuifNXPfZuKkYxC5IwRDEHuerurvSdBMzzrVi”,“ ttl”:1209600,“ created”:“” 2015-07-03T13:04:39.791Z“,” userId“:2}
我认为实际问题不是在parseJSON方法中发生,而是在performLoginRequestWithURL方法中发生。它返回一个空字符串。与异步请求有关。我注意到json字符串变量直到从方法返回后才被设置,因此返回空白。如果我放置了两个println(json)方法,一个在异步请求中,另一个在它之后,然后一个在先打印。从某种意义上讲这很有意义,但我不知道如何解决。我需要从帖子中返回json,但我不知道如何捕获。告诉我我需要使用同步请求,但是在从POST请求获取json的情况下,我不知道该怎么做。
这是我的代码:
//Login button pressed
@IBAction func login() {
//Gets url string
let url = getLogin()
//Posts url with UITextField data.
if let jsonString = performLoginRequestWithURL(url) {
//Error occurs in the parseJSON method
if let dictionary = parseJSON(jsonString) {
/*
if let at = dictionary["id"] as? String {
accesstoken = at
}
if let id = dictionary["userId"] as? Int {
println(id)
}
*/
} …Run Code Online (Sandbox Code Playgroud) 我正在关注该文件以下载该文件.
https://docs.strongloop.com/display/public/LB/Storage+component
在该文档中,如果下载文件意味着需要遵循url模式.
GET/containers/{container}/files/{file}
例:
我有容器1(容器名称)和文件名lb.png.
所以我像这样制作了网址
http://localhost:3000/api/containers/container1/files/lb.png?access_token=8Hfay0LRU2g22BjCqf3q8HsQCdsVBgBp9MHeekr3LfNLlILVUzUHUsUKOZmjTRD9
Run Code Online (Sandbox Code Playgroud)
我收到了文件名的响应,我希望一旦我在浏览器中使用url意味着该文件应该下载到url中.
得到的回应:
{
"container": "container1",
"name": "lb.png",
"size": 38780,
"atime": "2016-03-18T05:13:41.000Z",
"mtime": "2016-03-18T05:09:06.000Z",
"ctime": "2016-03-18T05:09:06.000Z"
}
Run Code Online (Sandbox Code Playgroud)
预期产出:
我需要下载文件(lb.png).
我想通过LoopBack -application中的REST-Api查询特定模型的记录.另外,我想通过include-filter包含相关对象.这很好,但返回所有相关的对象.是否可以限制它们,还可以通过相关对象的字段对它们进行排序?
- DEPARTMENT
Fields:
- id
- name
- ...
Relations_ -> hasMany: Messages
Relations_ -> hasMany: Members
- MESSAGE
Fields:
- id
- senderId
- body
- ...
- MEMBER
Fields:
- id
- email
- ...
Run Code Online (Sandbox Code Playgroud)
我想要实现的是查询所有部门及其所有成员,但只查询特定字段(created-timestamp)排序的最后一条消息.
第一种方法可能是GET-Request的普通查询字符串变体:
http://loopback-server:3000/api/departments?filter[include]=members&filter[include]=messages
Run Code Online (Sandbox Code Playgroud)
这将返回包含所有消息和所有成员的所有部门.但是,我想将返回消息的数量限制为最后一个(或最后5个或其他任何内容,按MESSAGE模型的特定字段排序).
我还尝试了jsonfied查询语法:
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages","limit":1}}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这里不使用"限制"参数来表示消息的关系.
以下变量将仅返回第一个部门,表示limit-param应用于departments-model,而不是关系模型.
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages"},"limit":1}
Run Code Online (Sandbox Code Playgroud)
然后我发现了范围参数并尝试了这个:
http://loopback-server:3000/api/departments?filter={"include":{"relation": "messages","scope":{"limit":1, "skip":0}}}
Run Code Online (Sandbox Code Playgroud)
这给出了一个非常奇怪的结果.这省略了与部门相关的所有消息,而不是一条返回一条消息的特定记录(它有超过10条),这是我所期望的.删除scope-parameter表明部门确实每个都有许多消息.
(我知道带有所有这些特殊字符的URL的参数,如{",:"}需要进行url编码.为了更好的可读性,我把它留在这里干净)
如何通过单个请求实现该查询?
strongloop ×10
loopbackjs ×6
javascript ×3
node.js ×3
rest ×2
angularjs ×1
api ×1
cordova ×1
download ×1
http ×1
ios ×1
json ×1
jugglingdb ×1
loopback ×1
npm ×1
swift ×1