Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor:仅在客户端插入,而不在服务器端数据库中持久化_Javascript_Meteor_Coffeescript - Fatal编程技术网

Javascript Meteor:仅在客户端插入,而不在服务器端数据库中持久化

Javascript Meteor:仅在客户端插入,而不在服务器端数据库中持久化,javascript,meteor,coffeescript,Javascript,Meteor,Coffeescript,每次用户执行操作时,我都试图将文档插入到Activities集合中。下面是我如何设置它的: 这是我的createActivityMeteor.method(在集合/活动中)。咖啡: @Activities = new Mongo.Collection('activities') Activities.allow insert: (userId, activity) -> activity.userId == userId Meteor.methods createAct

每次用户执行操作时,我都试图将文档插入到
Activities
集合中。下面是我如何设置它的:

这是我的
createActivity
Meteor.method(在集合/活动中)。咖啡

@Activities = new Mongo.Collection('activities')

Activities.allow
  insert: (userId, activity) ->
    activity.userId == userId

Meteor.methods
  createActivity: (movieId, userId) ->
    # if Meteor.isServer
    #   timer = Stats.createTimer("methods.createActivity")
    Activities.insert {
      docId: movieId
      userId: userId
      action: "favorite"
      collection: "movies"
      createdAt: new Date
    }, (error, results) ->
      console.log error, results
    return
这里是在另一个集合中调用它的地方--集合/列表。coffee。它在另一个Meteor.method中被调用,该方法在单击事件时被调用

Meteor.methods
  toggleFavorited: (movieId) ->
    if Meteor.isServer
      timer = Stats.createTimer("methods.toggleFavorited")
    user = Meteor.user()
    return unless user?
    favorited = Meteor.call('toggleInList', user.favorites, movieId)
    if favorited
      Meteor.call 'createActivity', movieId, Meteor.userId()  #LOOK HERE !!!!!
      Movies.update({mid: movieId}, {$inc: favorites: 1})

    else
      Movies.update({mid: movieId}, {$inc: favorites: -1})
    if Meteor.isServer
      timer.stop()
    favorited
这是我的出版物和订阅: 服务器/出版物。咖啡

Meteor.publish 'activities', ->
  return Activities.find()
Router.configure
  layoutTemplate: 'layout'
  loadingTemplate: 'loading'
  notFoundTemplate: 'notFound'
  trackPageView: true
  waitOn: ->
    [
      Meteor.subscribe("activities")
    ]
lib/router.coffee

Meteor.publish 'activities', ->
  return Activities.find()
Router.configure
  layoutTemplate: 'layout'
  loadingTemplate: 'loading'
  notFoundTemplate: 'notFound'
  trackPageView: true
  waitOn: ->
    [
      Meteor.subscribe("activities")
    ]
以下是我执行触发Activties insert方法的用户操作时的控制台日志:

但是该文档不会持久保存在数据库中!为什么呢


感谢您的帮助

如果您能够共享您的文件夹结构,meteor可能会认为您的方法定义在某个地方,这可能是唯一特定于客户端的代码,可以解释为什么它无法在服务器上执行

我的项目有以下文件夹:

/client/
/both <-- accessible to both client & server
/server <-- looks like you have this, server only code.
/client/

/都你是如何定义你的收藏的?你有没有碰巧通过了null作为论点

Activities = new Mongo.Collection(null)
将创建一个未持久化的本地集合

Activities = new Mongo.Collection("activities")

将保留在服务器上

谢谢分享您的直觉!但我看不出这个问题的相关性,因为我没有更新任何记录。我遗漏了什么吗?我遇到了同样的问题。你找到解决方案了吗?我的文件夹结构是
/client//collections//server/
等等。。。这些Meteor.methods是在collections文件夹中的一个文件中定义的——应该在客户端和服务器端都可用。我将其定义为
Activities=new Mongo.Collection(“Activities”)
…刚刚添加到我的问题中以查看完整的上下文。嘿,我已经尝试复制了你的问题,但似乎效果不错,请参见(运行一次,然后更改某些内容,点击save并查看服务器是否返回最初插入的文档)。您如何确定文档未持久化?您是否在运行应用程序时使用meteor mongo检查了数据库?哇,感谢您复制它!是的,我在mongo运行时检查了它,但文档未持久化。它似乎只是默默地失败了。