最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

将JSON转换为Mongoose文档(以及子文档对象)

IT培训 admin 10浏览 0评论

将JSON转换为Mongoose文档(以及子文档对象)

我试图将嵌套的JSON转换为mongoose文档和子文档,并且无法实现。我搜索了很多网页,找不到任何有用的东西。

Runkit Link:

这是我的代码:

var mongoose = require('mongoose');
var Schema = mongoose.Schema

const FbProfileSchema = new Schema({
    fb_id: {
        type: String,
        required: true,
        index: {
            unique: true
        }
    },
    first_name: String,
    last_name: String,
}, {
    toJSON: {
        transform: function (doc, ret) {
            var key = ret._id.toHexString();
            delete ret._id;
            ret._id = key;
        }
    }
});

const UserModel = new Schema({
    email: {
        type: String,
        required: true,
        index: {
            unique: true
        }
    },
    fbProfile: {
        type: Schema.ObjectId,
        ref: FbProfileSchema
    },
});

var FbProfile = mongoose.model('FbProfile', FbProfileSchema);
var User = mongoose.model('User', UserModel);

var json = "{\"fbProfile\":{\"_id\":\"5a38f1aff8920ebf2b098f40\",\"last_name\":\"My Last Name\",\"first_name\":\"My First Name\",\"fb_id\":\"temp_fb_id\",\"__v\":0},\"email\":\"[email protected]\",\"__v\":0,\"_id\":\"5a38f1aff8920ebf2b098f41\"}";

var userJSON = JSON.parse(json);
var user = new User(userJSON);

我得到的输出如下:

但我想也填充fbProfile,以便在项目中使用它时我不需要点击db。知道怎么做吗?

回答如下:

如果模式具有另一个集合的引用属性,则可以使用populate来获取并设置对父文档的引用。

User.findOne({
  email: '[email protected]'
}).populate('fbProfile').exec().then(/* do something */);

将JSON转换为Mongoose文档(以及子文档对象)

我试图将嵌套的JSON转换为mongoose文档和子文档,并且无法实现。我搜索了很多网页,找不到任何有用的东西。

Runkit Link:

这是我的代码:

var mongoose = require('mongoose');
var Schema = mongoose.Schema

const FbProfileSchema = new Schema({
    fb_id: {
        type: String,
        required: true,
        index: {
            unique: true
        }
    },
    first_name: String,
    last_name: String,
}, {
    toJSON: {
        transform: function (doc, ret) {
            var key = ret._id.toHexString();
            delete ret._id;
            ret._id = key;
        }
    }
});

const UserModel = new Schema({
    email: {
        type: String,
        required: true,
        index: {
            unique: true
        }
    },
    fbProfile: {
        type: Schema.ObjectId,
        ref: FbProfileSchema
    },
});

var FbProfile = mongoose.model('FbProfile', FbProfileSchema);
var User = mongoose.model('User', UserModel);

var json = "{\"fbProfile\":{\"_id\":\"5a38f1aff8920ebf2b098f40\",\"last_name\":\"My Last Name\",\"first_name\":\"My First Name\",\"fb_id\":\"temp_fb_id\",\"__v\":0},\"email\":\"[email protected]\",\"__v\":0,\"_id\":\"5a38f1aff8920ebf2b098f41\"}";

var userJSON = JSON.parse(json);
var user = new User(userJSON);

我得到的输出如下:

但我想也填充fbProfile,以便在项目中使用它时我不需要点击db。知道怎么做吗?

回答如下:

如果模式具有另一个集合的引用属性,则可以使用populate来获取并设置对父文档的引用。

User.findOne({
  email: '[email protected]'
}).populate('fbProfile').exec().then(/* do something */);
发布评论

评论列表 (0)

  1. 暂无评论