小编Dav*_*vid的帖子

Angularjs/Ionic SyncAdapter相当于

基于此问题在Android应用程序和网络服务器之间同步数据,我想知道是否存在用于离子应用程序的现有javascript(非本机)SyncAdapter(只是角度也可以).如果不是,我想在以下方面写一些指导方针:

  • 如何保持应用数据和服务器数据之间的一致性
  • 如何管理应用程序离线情况
  • 建议从服务器刷新的时间间隔
  • 省电管理

synchronization angularjs ionic-framework

5
推荐指数
0
解决办法
1233
查看次数

Mongodb返回字符串数组而不是对象数组

我使用以下代码从mongo db(带有mongoose的nodejs)中的用户查询令牌:

UserMdl.find().exists('token').select('token').exec(function onUsersFound(err, userMdls) {
  console.log(userMdls);
});
Run Code Online (Sandbox Code Playgroud)

所以我得到:

[ { 
  _id: 5447e36a60e5d15678de486c,
  token: '34f83483cc0ed82e17c162d'
}, ... ]
Run Code Online (Sandbox Code Playgroud)

有什么方法可以获取字符串数组:

[ '34f83483cc0ed82e17c162d', ... ]
Run Code Online (Sandbox Code Playgroud)

现在,我正在做的是对响应进行后处理。我问这个问题是因为我认为在mongoose / mongodb查询中也许有一种更快的方法。

编辑

我现在正在做的后期处理:

var results = [];
userMdls.forEach(function (userMdl) {
  results.push(userMdl.token);
});
Run Code Online (Sandbox Code Playgroud)

编辑

感谢saintedlama的回应,我做了一些测试,结果如下:

数据:14.976个文档
测试:100个
结果:

.find().exists('token').exec(..):1236.33毫秒
.aggregate({..}):136.07毫秒

测试代码:

  var start,
    end,
    time,
    firstTimes = [],
    secondTimes = [],
    test = 0,
    firstFinal,
    secondFinal,
    i,
    Q = require('q'),
    UserMdl = require('models/user'),
    u,
    tokens = [];


  function promiseWhile(condition, body) {
    var done = …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

5
推荐指数
1
解决办法
2280
查看次数

co 和 await 的区别

我不太明白这段代码之间的区别:

co(function *() {
    const val = yield aPromise();
    return val;
})
.then((val) => doSomethingWith(val), (err) => doSomethingWith(err));
Run Code Online (Sandbox Code Playgroud)

还有这个:

async function () {
    try {
        const val = await aPromise();
        doSomethingWith(val);
    } catch (err) {
        doSomethingWith(err);
    }
}
Run Code Online (Sandbox Code Playgroud)

浏览器或服务器(node.js)中使用的每个代码的优缺点(主要在性能,可读性和流程控制方面)是什么,为什么要使用 co(取决于co 外部库)或 await(这是还不是 ES7 的一部分,取决于babel-polyfill ) 的使用。

javascript node.js co babeljs ecmascript-2017

4
推荐指数
1
解决办法
1394
查看次数

eslint await 期望一个赋值或函数调用,而是看到一个表达式

当我将此代码用于承诺不需要结果继续时:

await resultNotNeeded(bla, foo);
Run Code Online (Sandbox Code Playgroud)

我收到这个 eslint 错误:

[eslint] 期望赋值或函数调用,却看到了一个表达式。(没有未使用的表达式)

如果代码是这样的:

const dummy = await resultNotNeeded(bla, foo);
Run Code Online (Sandbox Code Playgroud)

然后 eslint 错误是:

[eslint] 'dummy' 已定义但从未使用过 (no-unused-vars)

任何人都知道这应该如何解决(我知道我可以做到,// eslint-disable-line no-unused-expressions但我正在寻找此语句是否有更好的语法。

javascript lint async-await eslint ecmascript-2017

3
推荐指数
1
解决办法
4210
查看次数