1

如果第 3 方直接更新数据库,我问了一个关于流星更新视图的问题。我一直在玩 derby 示例,并注意到如果我更改 mongo 中的数据,视图不会更新。

derby 是否能够根据数据库中的数据更改来更改视图(即直接编辑表)。如果是这样,为什么它在示例中不起作用。

4

1 回答 1

3

如果您通过racer进行更改,Derby 将更新视图。因此,例如,当使用使用创建的默认应用程序时derby new project,我能够使用以下代码更新 derby 应用程序列表页面上的项目列表。您不想直接复制/粘贴此代码。您需要从 users 集合中查找您的 _userId 并确保您连接到正确的 redis 和 mongo 数据库,这意味着您的 derby 应用程序正在使用相同的数据库。

var liveDbMongo = require('livedb-mongo');
var redis = require('redis').createClient();
var racer = require('racer');

redis.select(process.env.REDIS_DB || 1);
var store = racer.createStore({
  db: liveDbMongo('localhost:27017/project?auto_reconnect', {safe: true}),
  redis: redis
});

var model = store.createModel();

model.on('change', function(value) {
  console.log('change: ' + value);
});

var obj = {
  'name': 'Updated from outside of derby',
  'note': new Date().toDateString(),
  'userId': 'fix-me'
};

model.add('items', obj);
于 2013-06-15T18:14:17.930 回答