0

我正在尝试使用与节点 orm 模块的简单 hasOne 关系:

var Shop = db.define('shops', {
    id: { type: "serial", key: true },
    name: String
});

var Offer = db.define('offers', {
    id: { type: "serial", key: true },
    name: String
});
Offer.hasOne('shop', Shop);

然后我想得到一个选定报价的商店;在文档中写到 hasOne 关系设置了一个新方法,在这种情况下为 getShop :

Offer.find(1, function (err, firstOffer) {
    if (err) throw err;

    firstOffer.getShop(function(err, shop) {
        res.send(shop);
    });        
});

但是一切都崩溃了,说firstOffer没有方法'getShop'......有人可以解释我做错了什么吗?

4

1 回答 1

0

我认为您将 find 与 get 混淆了。请将您的代码更改为(注意第一行中的 get ):

Offer.get(1, function (err, firstOffer) {
  if (err) throw err;
  firstOffer.getShop(function(err, shop) {
    res.send(shop);
  });        
});

当您执行查找时,它会返回一个数组(它可以返回一个空数组),因此您正在调用该数组的 getShop。

于 2014-06-26T14:44:24.417 回答