javascript - node-orm2 实例缺少保存方法

标签 javascript node.js 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 和 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,node-orm2 仍会传递结果数组:

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

关于javascript - node-orm2 实例缺少保存方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17628988/

相关文章:

node.js - 无法执行 "npm install --save firebase"

javascript - 如何清除之前的间隔并运行新的间隔

node.js - Node-Orm hasOne 关系未正确形成

javascript - Node.js:如何在node-orm中选择和连接表?

javascript - GM_setClipboard(和其他 GM 函数)在 Firefox 中给出错误,但在 Chrome/Tampermonkey 中没有给出错误?

javascript - jQuery 切换 - 只显示一个 div

javascript - 可以在新创建的窗口上设置 onload() 吗?

javascript - 使用循环从 javascript 中的对象获取函数结果

node.js - faker 可以用来创建假的 JSON 数据吗