Ich versuche geschachtelte JSON in Mungo-Dokument und Filialdokument zu konvertieren und Art nicht möglich, es zu tun. Ich habe viel im Web gesucht und konnte keine nützlichen finden.Konvertieren von JSON in Mongoose-Dokument (zusammen mit Unterdokument-Objekt)
Runkit-Link: https://runkit.com/codesnooker/5a391097232f800012605983
Hier ist mein Code:
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);
Und ich bin immer die Ausgabe wie folgt:
Aber ich möchte fbProfile auch bevölkert haben, so dass Ich brauche db nicht zu drücken, wenn ich es im Projekt verwende. Irgendeine Idee, wie man das macht?
Mit Mongo Abfrage ist es einfach. Ich möchte das nicht benutzen. Ich möchte es aus dem vorhandenen JSON konvertieren, der im RAM gespeichert ist. – codesnooker
Zuerst, für Ihre eigene Erbauung, ** JSON ** ist ein String und kein Objekt, daher ist es die Abkürzung von ** J ** ava ** S ** cript ** O ** bject ** N ** otation. Was Sie haben, wird umgangssprachlich als ** POJO ** oder ** P ** bezeichnet ** O ** ld ** J ** Avascript ** O ** bject. Sie sind anders. :) Okay, bei Ihrem Beispiel sind die einzigen Daten in diesem Objekt eine ID für das 'fbProfile', auf das Sie zugreifen möchten. Wenn Sie das also nicht bereits im Speicher haben, müssen Sie es auf die eine oder andere Weise aus der Datenbank holen. Wenn Sie es bereits im Speicher haben, können Sie es in dieses Objekt zusammenführen, um die gleiche Ausgabe zu erstellen. –
Ich habe bereits fbProfile Daten im Speicher. Ich möchte es nur in ein richtiges Mongoose-Dokument umwandeln – codesnooker