我最近一直在与Meteor和React合作进行项目开发,而Meteor的发布和订阅存在一些问题。
这是示例代码:
这是我拥有的第一本出版物,当用户转到“设置/通知”页面时,我们可以看到通知设置
# Publish user notifications settings information
import { Meteor } from 'meteor/meteor'
import Users from '../../users.coffee'
Meteor.publish 'user.notifications.settings', ->
If not @userId then throw new Meteor.Error 403, 'You must be logged in.'
fields = {}
fields["settings.notifications"] = on
Users.find( { _id : @userId } , { fields } )
这是用户访问页面settings/api
的第二篇出版物,其中显示了API设置
# Publish user API-keys
EXCHANGES = require '../../../../startup/both/exchanges'
import { Meteor } from 'meteor/meteor'
import Users from '../../users.coffee'
Meteor.publish 'user.api_keys', ( user_id ) ->
# return ready if no use_id is passed
return @ready() if not user_id
fields = {}
for exchange in EXCHANGES
if user_id is @userId
fields["settings.exchanges.#{exchange}"] = on
else
fields["settings.exchanges.#{exchange}.valid"] = on
Users.find( { _id : user_id }, { fields } )
这里的问题是当用户从一个页面导航到另一个Meteor不会更新订阅
在我的组件上,我有此订阅
Meteor.subscribe 'user.notifications.settings'
和另一个
Meteor.subscribe 'user.api_keys', user_id
如果我console.log Users.find() 如果刷新页面显示正确的页面,它将显示以前出版物的投影,而不是当前的投影。只有当我从一条路线导航到另一条路线时,错误才会出现。
谢谢