为什么添加 mongodb returns 圆形对象,即使插入的对象不是圆形对象
Why dose the mongodb returns circular object even though the inserted object is not a circular one
我是 MEAN-stack 应用程序的新手,我试图在 mean-stack 中创建一个社交媒体应用程序。我创建了 UserModel.js 文件来保存下面给出的用户的全部详细信息,
UserModel.js 文件
var Address = {
pincode : "",
post : "",
city : "",
district : "",
state : "",
country : "",
};
var Privacy = {
public :true,
friendsOnly : false,
friendsOfFriendsOnly:false,
ImagepostPrivacy : false
};
var Education = {
primarySchool : "",
highSchool : "",
higherSecondary : "",
college : "",
};
var UserModel = {
id : "",
name : "",
lastname : "",
age : 0,
email:"",
phone:"",
username : "",
password : "",
active : true
};
function getUserModel(){
return{
userBasicDetails : UserModel,
userAddress : Address,
userPrivacy : Privacy,
userEducation : Education,
userFollowings : [],
userFollowers : [],
userFriends : []
}
};
module.exports.Usermodel = getUserModel;
我认为它是 java 的 POJO class,然后在 userService.js 文件中我访问了这个对象并将 req.body() 的相应值分配给Usermodel 并在那里我将这个 Usermodel 对象转换为 json 并且按预期工作。
为 'users' 集合创建和插入对象的代码,
var userModel = require("../../../models/UserModel");
var con = require("../../database/DbConnection");
var userObject = null;
function registerNewUser(registerdata,callback) {
if(!validateInitialRegisteration(registerdata)){// some validation stuff
return callback(new Error("Invalid data"));
}else{
userObject = createUsedrObject(registerdata);
console.log("object before insertion %j",userObject);// got converted json
con.database().collection('users',function (err,usersCollection) {
usersCollection.insert(userObject,{w:1},function (err) {
if(err){
console.log("error %j",err);
callback(err,null);
}else{
callback(null,userObject);
}
})
});
}
}
/**
*This function will make the user collection object
**/
function createUsedrObject(obj){
var userObject = userModel.Usermodel();
userObject.userBasicDetails.name = obj.firstname;
userObject.userBasicDetails.password = obj.password;
userObject.userBasicDetails.username = obj.username;
return userObject;
}
然后我将对象插入到我的 'users' 命名集合中,然后我编写函数从 'users' 命名集合
中检索数据
function loginCheck(credentials,callback){
if(!credentials){
return callback(new Error("Invalid data"));
}else{
con.database().collection('users',function (err,usersCollection) {
if(err){
return callback(err,null);
}
else{
console.log("fetched data %j",usersCollection.find()); // here I am getting a log like 'fetched data [Circular]'
//callback(null,usersCollection.find());
}
});
}
};
预计json我在下面给出插入之前安慰
{ userBasicDetails:
{ id: '',
name: 'vishnu',
lastname: '',
age: 0,
email: '',
phone: '',
username: 'kr.vishnu401@gmail.com',
password: '1234',
active: true },
userAddress:
{ pincode: '',
post: '',
city: '',
district: '',
state: '',
country: '' },
userPrivacy:
{ public: true,
friendsOnly: false,
friendsOfFriendsOnly: false,
ImagepostPrivacy: false },
userEducation:
{ primarySchool: '',
highSchool: '',
higherSecondary: '',
college: '' },
userFollowings: [],
userFollowers: [],
userFriends: [] }
数据库中的集合是
> db.users.find({"_id":ObjectId("581ae4994878ad1a84fa0c77")})
{ "_id" : ObjectId("581ae4994878ad1a84fa0c77"), "userBasicDetails" : { "id" : "", "name" : "vishnu", "lastname" : "", "age" : 0, "email" : "", "phone" : "", "username" : "vishnu@gmail.com", "password" : "123456", "active" : true }, "userAddress" : { "pincode" : "", "post" : "", "city" : "", "district" : "", "state" : "", "country" : "" }, "userPrivacy" : { "public" : true, "friendsOnly" : false, "friendsOfFriendsOnly" : false, "ImagepostPrivacy" : false }, "userEducation" : {"primarySchool" : "","highSchool" : "", "higherSecondary" : "", "college" : ""}, "userFollowings" : [ ], "userFollowers" : [ ], "userFriends: [ ] }
因为是Circular类型我没法把这个对象转成json,但是插入的对象我在db操作前转成json。我想我在某个地方搞砸了这些概念。如果您遇到同样的问题,请告诉我。
usersCollection.find()
是一个接受回调的函数
试试这个
usersCollection.find().toArray(function(e, users) {
if (e) {
return callback(e, null);
}
console.log(users);
callback(null, users);
});
文档:https://mongodb.github.io/node-mongodb-native/api-generated/collection.html
我是 MEAN-stack 应用程序的新手,我试图在 mean-stack 中创建一个社交媒体应用程序。我创建了 UserModel.js 文件来保存下面给出的用户的全部详细信息,
UserModel.js 文件
var Address = {
pincode : "",
post : "",
city : "",
district : "",
state : "",
country : "",
};
var Privacy = {
public :true,
friendsOnly : false,
friendsOfFriendsOnly:false,
ImagepostPrivacy : false
};
var Education = {
primarySchool : "",
highSchool : "",
higherSecondary : "",
college : "",
};
var UserModel = {
id : "",
name : "",
lastname : "",
age : 0,
email:"",
phone:"",
username : "",
password : "",
active : true
};
function getUserModel(){
return{
userBasicDetails : UserModel,
userAddress : Address,
userPrivacy : Privacy,
userEducation : Education,
userFollowings : [],
userFollowers : [],
userFriends : []
}
};
module.exports.Usermodel = getUserModel;
我认为它是 java 的 POJO class,然后在 userService.js 文件中我访问了这个对象并将 req.body() 的相应值分配给Usermodel 并在那里我将这个 Usermodel 对象转换为 json 并且按预期工作。
为 'users' 集合创建和插入对象的代码,
var userModel = require("../../../models/UserModel");
var con = require("../../database/DbConnection");
var userObject = null;
function registerNewUser(registerdata,callback) {
if(!validateInitialRegisteration(registerdata)){// some validation stuff
return callback(new Error("Invalid data"));
}else{
userObject = createUsedrObject(registerdata);
console.log("object before insertion %j",userObject);// got converted json
con.database().collection('users',function (err,usersCollection) {
usersCollection.insert(userObject,{w:1},function (err) {
if(err){
console.log("error %j",err);
callback(err,null);
}else{
callback(null,userObject);
}
})
});
}
}
/**
*This function will make the user collection object
**/
function createUsedrObject(obj){
var userObject = userModel.Usermodel();
userObject.userBasicDetails.name = obj.firstname;
userObject.userBasicDetails.password = obj.password;
userObject.userBasicDetails.username = obj.username;
return userObject;
}
然后我将对象插入到我的 'users' 命名集合中,然后我编写函数从 'users' 命名集合
中检索数据 function loginCheck(credentials,callback){
if(!credentials){
return callback(new Error("Invalid data"));
}else{
con.database().collection('users',function (err,usersCollection) {
if(err){
return callback(err,null);
}
else{
console.log("fetched data %j",usersCollection.find()); // here I am getting a log like 'fetched data [Circular]'
//callback(null,usersCollection.find());
}
});
}
};
预计json我在下面给出插入之前安慰
{ userBasicDetails:
{ id: '',
name: 'vishnu',
lastname: '',
age: 0,
email: '',
phone: '',
username: 'kr.vishnu401@gmail.com',
password: '1234',
active: true },
userAddress:
{ pincode: '',
post: '',
city: '',
district: '',
state: '',
country: '' },
userPrivacy:
{ public: true,
friendsOnly: false,
friendsOfFriendsOnly: false,
ImagepostPrivacy: false },
userEducation:
{ primarySchool: '',
highSchool: '',
higherSecondary: '',
college: '' },
userFollowings: [],
userFollowers: [],
userFriends: [] }
数据库中的集合是
> db.users.find({"_id":ObjectId("581ae4994878ad1a84fa0c77")})
{ "_id" : ObjectId("581ae4994878ad1a84fa0c77"), "userBasicDetails" : { "id" : "", "name" : "vishnu", "lastname" : "", "age" : 0, "email" : "", "phone" : "", "username" : "vishnu@gmail.com", "password" : "123456", "active" : true }, "userAddress" : { "pincode" : "", "post" : "", "city" : "", "district" : "", "state" : "", "country" : "" }, "userPrivacy" : { "public" : true, "friendsOnly" : false, "friendsOfFriendsOnly" : false, "ImagepostPrivacy" : false }, "userEducation" : {"primarySchool" : "","highSchool" : "", "higherSecondary" : "", "college" : ""}, "userFollowings" : [ ], "userFollowers" : [ ], "userFriends: [ ] }
因为是Circular类型我没法把这个对象转成json,但是插入的对象我在db操作前转成json。我想我在某个地方搞砸了这些概念。如果您遇到同样的问题,请告诉我。
usersCollection.find()
是一个接受回调的函数
试试这个
usersCollection.find().toArray(function(e, users) {
if (e) {
return callback(e, null);
}
console.log(users);
callback(null, users);
});
文档:https://mongodb.github.io/node-mongodb-native/api-generated/collection.html