Firebase:错误:密钥内容未定义。无法在JSON中传递undefined。请改用null。“

时间:2015-04-14 16:15:48

标签: angularjs firebase angularfire

第一次尝试使用firebase。在这里完成整个工作:     http://plnkr.co/3WIrBn

var app = angular.module('myApp',['firebase']);

app.factory('chatMessages',["$firebaseArray",function($firebaseArray){
var ref = new Firebase('https://scanapp.firebaseIO.com/tut');
    return $firebaseArray(ref);
}]);


app.controller('MyController'['$scope','chatMessages',function($scope,chatMessages){

$scope.test = 'hello world';
$scope.user = "anonymouse";
$scope.messages = chatMessages;

$scope.addMessage = function(){
    $scope.messages.$add({
        from: $scope.user,
        content: $scope.message
    });
    $scope.message = '';
};


}]);

我尝试在他们的网站上关注他们的教程,做了他们的快速入门以及彻底阅读文档,但我不断收到上述错误:

“错误:密钥内容未定义。无法在JSON中传递未定义。请改用null。”

我可以在上面的插件中使用它,所以我理解这些概念。然后我从plunk中复制了相同的代码,CDN链接到我的项目,同样的错误。我使用离子框架为基于Web的应用程序。 Angular和一切仍然正常工作,我只是在尝试按“添加”按钮运行该函数时收到错误。

更新:它肯定与输入有关。如果我将“from”和“content”键和字段设置为字符串而不是绑定到$ scope,它可以工作:

    $scope.addMessage = function(){
    $scope.messages.$add({
        from: 'test',
        content: 'stuff'
    });
    $scope.message = '';
};

但显然除了一遍又一遍地发送相同的数据之外没有用。

2 个答案:

答案 0 :(得分:0)

表格中有$ scope.messages。表单创建一个新范围。删除表单并使用以下内容替换您的按钮:<button ng-click="addMessage()">Add</button> 这不会创建新范围,您的消息将成功添加到您的firebase。 至少它对我有用。

答案 1 :(得分:0)

将模型添加到函数

public static signup(req: express.Request, res: express.Response) {
      UserModel.findOne({ email: req.body.email }).exec()
      .then(existingUser => {
          if(existingUser) {
              return Promise.resolve({
                user: existing,
                existing: true
              });
          }
          return UserModel.create({
              firstName: req.body.firstName,
              lastName: req.body.lastName,
              email: req.body.email,
              password: req.body.password
          }).then((user) => {
            return Promise.resolve({
              existing: false,
              user: user
            });
          });
      })
      .then(response => {
        if (response.existing) {
          return res.send({ message: `Email ${response.user.email} is in use` });
        } else return res.send({ token: AuthUtils.createJWT(response.user)});
      })
      .catch(err => {
          console.log(err);
      });
  }

并在您的表单上

 $scope.addMessage = function(user,message) {
          $scope.messages.$add({
            user,
            body: message
          });
          //RESET MESSAGE
          $scope.msg = "";
        } 

祝你好运。