LoopBack 远程方法到 return 记录数组
LoopBack Remote Method to return array of records
我使用 loopback 来生成我的 api 和 AngularJS 来与之通信。我有一个名为 Sync
的模型,其中包含以下记录:
Sync": {
"34": "{\"uuid\":\"287c6625-4a95-4e11-847e-ad13e98c75a2\",\"table\":\"Property\",\"action\":\"create\",\"timeChanged\":1466598611995,\"id\":34}",
"35": "{\"uuid\":\"287c6625-4a95-4e11-847e-ad13e98c75a2\",\"table\":\"Property\",\"action\":\"update\",\"timeChanged\":1466598625506,\"id\":35}",
"36": "{\"uuid\":\"176aa537-d000-496a-895c-315f608ce494\",\"table\":\"Property\",\"action\":\"update\",\"timeChanged\":1466598649119,\"id\":36}"
}
在我的 sync.js 模型文件中,我正在尝试编写以下接受数字(长 - timeChanged)的方法,并且应该 return 所有具有相等或相等 timeChanged 字段的记录.
这是我所在的位置:
Sync.getRecodsAfterTimestamp = function(timestamp, cb){
var response = [];
Sync.find(
function(list) {
/* success */
// DELETE ALL OF THE User Propery ratings associated with this property
for(i = 0; i < list.length; i++){
if(list[i].timeChanged == timestamp){
response += list[i];
console.log("Sync with id: " + list[i].id);
}
}
cb(null, response);
},
function(errorResponse) { /* error */ });
}
Sync.remoteMethod (
'getRecodsAfterTimestamp',
{
http: {path: '/getRecodsAfterTimestamp', verb: 'get'},
accepts: {arg: 'timeChanged', type: 'number', http: { source: 'query' } },
returns: {arg: 'name', type: 'Array'}
}
);
当我在环回浏览器中尝试这个方法时,我看到了这个 "AssertionError"
您的问题一定是由于提供给 Sync.find() 方法的参数不正确造成的。 (您为成功和错误场景提供了 2 个函数)。根据 Strongloop documentation,持久模型的查找函数有 2 个参数,即。一个可选的过滤器对象和一个回调。回调使用节点错误优先样式。
请尝试将您的 Sync.find() 更改为如下所示:
Sync.find(function(err, list) {
if (err){
//error callback
}
/* success */
// DELETE ALL OF THE User Propery ratings associated with this property
for(i = 0; i < list.length; i++){
if(list[i].timeChanged == timestamp){
response += list[i];
console.log("Sync with id: " + list[i].id);
}
}
cb(null, response);
});
我使用 loopback 来生成我的 api 和 AngularJS 来与之通信。我有一个名为 Sync
的模型,其中包含以下记录:
Sync": {
"34": "{\"uuid\":\"287c6625-4a95-4e11-847e-ad13e98c75a2\",\"table\":\"Property\",\"action\":\"create\",\"timeChanged\":1466598611995,\"id\":34}",
"35": "{\"uuid\":\"287c6625-4a95-4e11-847e-ad13e98c75a2\",\"table\":\"Property\",\"action\":\"update\",\"timeChanged\":1466598625506,\"id\":35}",
"36": "{\"uuid\":\"176aa537-d000-496a-895c-315f608ce494\",\"table\":\"Property\",\"action\":\"update\",\"timeChanged\":1466598649119,\"id\":36}"
}
在我的 sync.js 模型文件中,我正在尝试编写以下接受数字(长 - timeChanged)的方法,并且应该 return 所有具有相等或相等 timeChanged 字段的记录.
这是我所在的位置:
Sync.getRecodsAfterTimestamp = function(timestamp, cb){
var response = [];
Sync.find(
function(list) {
/* success */
// DELETE ALL OF THE User Propery ratings associated with this property
for(i = 0; i < list.length; i++){
if(list[i].timeChanged == timestamp){
response += list[i];
console.log("Sync with id: " + list[i].id);
}
}
cb(null, response);
},
function(errorResponse) { /* error */ });
}
Sync.remoteMethod (
'getRecodsAfterTimestamp',
{
http: {path: '/getRecodsAfterTimestamp', verb: 'get'},
accepts: {arg: 'timeChanged', type: 'number', http: { source: 'query' } },
returns: {arg: 'name', type: 'Array'}
}
);
当我在环回浏览器中尝试这个方法时,我看到了这个 "AssertionError"
您的问题一定是由于提供给 Sync.find() 方法的参数不正确造成的。 (您为成功和错误场景提供了 2 个函数)。根据 Strongloop documentation,持久模型的查找函数有 2 个参数,即。一个可选的过滤器对象和一个回调。回调使用节点错误优先样式。
请尝试将您的 Sync.find() 更改为如下所示:
Sync.find(function(err, list) {
if (err){
//error callback
}
/* success */
// DELETE ALL OF THE User Propery ratings associated with this property
for(i = 0; i < list.length; i++){
if(list[i].timeChanged == timestamp){
response += list[i];
console.log("Sync with id: " + list[i].id);
}
}
cb(null, response);
});