node-orm2实例缺少save方法

时间:2013-07-13 09:48:59

标签: javascript node.js node-orm2

我是使用node-orm2的新手,我遇到了以下问题;

TypeError: Object [object Object] has no method 'save'

完整堆栈跟踪http://pastebin.com/cb9Lt9pB

此错误来自Model方法,定义如下;

User.findOrCreate = function (providerName, token, tokenSecret, uid, profile, done) {
this.find({uid: uid}, 1, function(err, user) {
  if (user) {

    user.displayName = profile.displayName;
    user.profileImage = profile._json.profile_image_url;

    user.save(function(err){
      return done(err, user, false);
    });

  } else {
    ....

模型定义的完整代码在http://pastebin.com/7Bv8XG36

据我所知,实例未通过文档(https://node-orm.readthedocs.org/en/latest/ref/instance.html)中概述的保存方法返回。

如果我在用户对象上执行console.log,你可以清楚地看到它除了getter和setter之外没有任何方法。

[ { id: [Getter/Setter],
uid: [Getter/Setter],
username: [Getter/Setter],
displayName: [Getter/Setter],
token: [Getter/Setter],
tokenSecret: [Getter/Setter],
profileImage: [Getter/Setter] } ] 

如果我使用不正确,任何人都可以提供任何见解吗?或任何指针,以帮助我理解为什么save方法不在实例上。

作为参考,我使用最新版本的node-orm2(“orm”:“*”)和mysql。

1 个答案:

答案 0 :(得分:5)

即使您将结果数量限制为1,node-orm2仍会传递一系列结果:

this.find({uid: uid}, 1, function(err, users) {
  if (! err && users.length) {
    var user = users[0]; // user.save() should work now
    ...
  }
});