如果第 3 方直接更新数据库,我问了一个关于流星更新视图的问题。我一直在玩 derby 示例,并注意到如果我更改 mongo 中的数据,视图不会更新。
derby 是否能够根据数据库中的数据更改来更改视图(即直接编辑表)。如果是这样,为什么它在示例中不起作用。
如果您通过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);