2013-07-13 31 views
3

我剛剛嘗試使用node-orm2並陷入以下問題;node-orm2實例缺少保存方法

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

完整棧跟蹤http://pastebin.com/cb9Lt9pB

此錯誤由模型方法內的,下面的定義;

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和setters之外沒有其他方法。

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

任何人都可以提供任何見解,如果我使用不正確?或者任何指針來幫助我理解爲什麼save方法不在實例上。

僅供參考我正在使用mysql的最新版本的node-orm2(「orm」:「*」)。

回答

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 
    ... 
    } 
}); 
+0

肯定,並使用model.get(someId)如果你知道你是什麼樣的主ID試圖檢索(uid可能會或可能不是原始帖子中的關鍵字)。 – akaphenom