mongojs没有做CRUD操作

时间:2015-08-13 09:08:14

标签: node.js mongodb mongodb-query mongojs

final void attach(Context context, ActivityThread aThread,
        Instrumentation instr, IBinder token, int ident,
        Application application, Intent intent, ActivityInfo info,
        CharSequence title, Activity parent, String id,
        NonConfigurationInstances lastNonConfigurationInstances,
        Configuration config, String referrer, IVoiceInteractor voiceInteractor) {
    attachBaseContext(context);

    mFragments.attachActivity(this, mContainer, null);

    mWindow = PolicyManager.makeNewWindow(this);
    mWindow.setCallback(this);
    mWindow.setOnWindowDismissedCallback(this);
    mWindow.getLayoutInflater().setPrivateFactory(this);
    ...
}

没有任何控制台在nodejs app中工作,我没有收到任何错误?

1 个答案:

答案 0 :(得分:0)

我怀疑你实际上在调用db.close(),但在你的问题中没有告诉我们。那个,以及当你转到.find()数据时没有看到输出的情况主要是这里的方法是“异步”的问题,你需要等待"等待&#34 ;用于你想要的回调执行。

此处应使用.forEach()方法"谨慎使用",因为它几乎不是您在生产代码中真正想要的。通过"async"库中的一点异步流控制帮助可以正常工作:

var localdb = 'localdb',
    async = require('async'),
    mongojs = require('mongojs'),
    collections = ['projects','homeAnimationData'],
    db = mongojs(localdb,collections);


async.series(
  [
    function(callback) {
      db.homeAnimationData.remove({},callback);
    },
    function(callback) {
      var data  = { "image": "/imagea", "width": "200px" };
      db.homeAnimationData.save(data,function(err,saved) {
        if (err) callback(err);
        console.log('Saved');
        callback();
      });
    },
    function(callback) {
      db.homeAnimationData.find({}).limit(10).toArray(function(err,docs) {
        if (err) callback(err);
        console.dir(docs);
        callback();
      });
    }
  ],
  function(err) {
    if (err) throw err;
    db.close();
  }
);

或者也可以调用.toArray()方法,您可以使用本地提供的"stream"接口:

var localdb = 'localdb',
    async = require('async'),
    mongojs = require('mongojs'),
    collections = ['projects','homeAnimationData'],
    db = mongojs(localdb,collections);


async.series(
  [
    function(callback) {
      db.homeAnimationData.remove({},callback);
    },
    function(callback) {
      var data  = { "image": "/imagea", "width": "200px" };
      db.homeAnimationData.save(data,function(err,saved) {
        if (err) callback(err);
        console.log('Saved');
        callback();
      });
    },
    function(callback) {
      var cursor = db.homeAnimationData.find({}).limit(10);

      cursor.on('data',function(data) {
        cursor.pause();
        console.dir(data);
        cursor.resume();
      });

      cursor.on('err',callback);

      cursor.on('end',callback);
    }
  ],
  function(err) {
    if (err) throw err;
    db.close();
  }
);

在后一种情况下,这可以让您更好地处理更大的结果。 mongojs documtation本身为JSONStream提供了example .pipe()

但一切正常,你只需记住这是" async"编程,并在逻辑上等待执行完成,然后再继续阅读"阅读"写回数据,或者确实关闭数据库连接。