为什么添加 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