js-data mongodb适配器只从findAll()返回_id

时间:2017-09-15 07:55:29

标签: mongodb jsdata

我将js-data与mongodb适配器js-data-mongodb一起使用。我遇到了store.findAll仅返回记录的_id的问题。没有其他字段返回。

这是我在mongoDB的artworks集合中的记录:

_id: ObjectId("59bb7ee069d99027f5219667")
uid :"599b73c285b13252e7f54161"
title: "t1"
description: "t1"
imageUrl: "this.artwork.imageUrl"
videoUrl: "this.artwork.videoUrl"

我的js-data商店定义的一部分:

// Create a store to hold your Mappers
const store = new Container({});

// Mappers in "store" will use the MongoDB adapter by default
store.registerAdapter('mongodb', adapter, { 'default': true });

store.defineMapper('artwork', {
  collection: 'artworks',
  schema: artworkSchema,
  idAttribute: '_id'
});

我的应用中的代码:

store.findAll('artwork', {uid: '599b73c285b13252e7f54161'}).then((records) => {
    console.log(records);
  })

输出: [ Record { _id: '59bb7ee069d99027f5219667' } ]

为了获得回复中返回的记录的所有字段,我缺少什么?

谢谢!

更新

如果我从mapper中删除了我的模式定义,则会正确返回这些字段。这是我的架构定义。我不知道我在哪里出错了。

const artworkSchema = new Schema({
  $schema: 'http://json-schema.org/draft-06/schema#',
  title: 'Artwork',
  description: 'Schema for Artwork records',
  type: 'object',
  properties: {
    uid: { type: 'string' },
    title: { type: 'string' },
    description: { type: 'string' },
    imageUrl: { type: 'string' },
    videoUrl: { type: 'string' }
  },
  required: ['uid', 'title', 'imageUrl', 'videoUrl']
});

1 个答案:

答案 0 :(得分:0)

唉,这对我来说很傻。 findAll()调用返回了一个Records数组及其属性。 console.log()未显示,但我可以使用数组索引(records[0].title)或使用get('title')中的{{1}}来获取数据。