1

これは、sails-disk アダプターでは機能しますが、sails-mongo または Sails-postgresql では機能しません。

フィードとイベントの 2 つのモデルがあり、フィードは多くのイベントに属することができます。

1 つ以上のイベントに関連付けて (「posts」プロパティを介して) 新しいフィード レコードを作成または保存すると、「posts」プロパティが保存されません。ただし、(「posted」プロパティを介して) 1 つのフィードに関連付けられた新しいイベントを作成または保存すると、「posted」プロパティは適切に保存されます。問題: フィードとそのイベント (Sails を使用.populate) をフィード側からクエリできず、イベント側からのみクエリを実行できません。

渡されるデータにFeed.create「posts」プロパティが含まれていることを確認できますが、コールバックからの応答には含まれていません。

sails.log.debug('Before Feed.create', data);

  Before Feed.create { id: 64988,
  username: 'anevening',
  displayName: 'An Evening',
  coverImage: 'http://res.cloudinary.com/dostuff-media/image/upload/v1387144880/metro-bkg_1-30.png',
  profileImage: 'http://res.cloudinary.com/dostuff-media/image/upload/v1387144880/metro-bkg_1-30.png',
  description: undefined,
  links: [],
  source: 
   { domain: 'dola.com',
     id: 64988,
     url: 'http://www.dola.com/artists/an-evening' },
  posts: [ 3055349, 3062549, 2866105, 2866107 ] }

Feed.create(data).exec(sails.log.debug);

  { username: 'anevening',
  displayName: 'An Evening',
  coverImage: 'http://res.cloudinary.com/dostuff-media/image/upload/v1387144880/metro-bkg_1-30.png',
  profileImage: 'http://res.cloudinary.com/dostuff-media/image/upload/v1387144880/metro-bkg_1-30.png',
  description: null,
  links: [],
  source: 
   { domain: 'dola.com',
     id: 64988,
     url: 'http://www.dola.com/artists/an-evening' },
  createdAt: Sat Nov 22 2014 14:53:21 GMT-0800 (PST),
  updatedAt: Sat Nov 22 2014 14:53:21 GMT-0800 (PST),
  id: '64988' }

私のモデルは次のようになります。

Feed.js:

module.exports = {

  attributes: {

    id: {
      type: 'integer',
      unique: true,
      primaryKey: true
    },
    ...
    posts: {
       collection: 'event',
       via: 'posted'
    }
    ...

  }
};

イベント.js:

module.exports = {

  attributes: {

    id: {
      type: 'integer',
      unique: true,
      primaryKey: true
    },
    ...
    posted: {
      model: 'feed'
    }
    ...

  }

};

最後に、私の config/models.js と config/connections.js は次のようになります。

接続: {

 'default': 'mongo',

    localDiskDb: {
      adapter: 'sails-disk'
    },

    mongo: {
      adapter: 'sails-mongo',
      url: process.env.MONGO_HOST',
      schema: true
    },

    postgres: {
      adapter: 'sails-postgresql',
      url: process.env.POSTGRES_HOST,
      schema: true,
      ssl: true
    }

  },

  models: {
    connection: 'mongo',
    migrate: 'alter'
  }
4

1 に答える 1

1

メソッドは、その.createコールバックで入力されたデータを返しません。Feed モデルにクエリを実行してposts関連付けを設定すると、データが表示されます。

Feed.find()
.populate('posts')
.exec(console.log);
于 2014-11-24T18:50:24.123 に答える