相关疑难解决方法(0)

如何显示JavaScript对象?

如何以字符串格式显示JavaScript对象的内容,就像我们alert变量一样?

我希望显示对象的格式相同的方式.

javascript javascript-objects

1520
推荐指数
27
解决办法
167万
查看次数

如何将Mongoose文档转换为普通对象?

我有一个来自mongoose的文档,我想在JSON编码之前扩展并作为响应发送出去.如果我尝试向doc添加属性,则会被忽略.在不能Object.getOwnPropertyNames(doc)进行正常扩展时,属性不会出现.奇怪的是,它JSON.parse(JSON.encode(doc))可以工作并返回一个具有所有正确属性的对象.有一个更好的方法吗?

mongoose node.js

186
推荐指数
8
解决办法
10万
查看次数

mongoose .find()方法返回具有不需要的属性的对象

所以,我已经和猫鼬一起工作了一段时间,我发现了一些非常奇怪的东西.如果有人能够启发我会很棒.

问题是,当使用mongoose的.find()方法时,我得到的对象充满了属性,我不知道它来自哪里(我猜它们是内置属性,但无论如何)和我想只通过属性I .select()进行迭代.得到它了?没有?好的......解释得更好:

我声明了我的架构和模型:

var mySchema = mongoose.Schema({
  name: String,
  prop1: String,
  prop2: String,
  prop3: String
})
var myModel = DB.model('myDataBase', mySchema)
Run Code Online (Sandbox Code Playgroud)

然后我想找一个带有名字的文件,比方说,约翰并检索除"名字"字段以外的所有文件,所以我去了:

myModel.find({name: 'John'}, '-name', function(err, results){
  log(results[0])
}
Run Code Online (Sandbox Code Playgroud)

和日志(结果[0])日志

{ prop1: 'one',
  prop2: 'two',
  prop3: 'three' }
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但问题是,现在我想迭代这些属性并逐个检查,我不确定每个结果会有多少'道具',所以我想做类似的事情:

for(var key in results[0]){
  log(key)
}
Run Code Online (Sandbox Code Playgroud)

所以,我希望它会记录'prop1','prop2'和'prop3',但不是!好吧,我得到道具1,2和3,但我也得到了很多其他的属性和功能,如:isNew,error,_maxListeners,_doc等.不仅这些额外属性,我还得到'name'属性,我从选择中排除了一个(并且它被排除在外,如第一个日志中所示).怪啊?

可是等等!还有更多!我在网上搜索过,发现有些人说"Dude,迭代对象属性时使用hasOwnProperty方法!".所以我去了:

for (var key in results[0]){
  if (results[0].hasOwnProperty(key)) log(key)
}
Run Code Online (Sandbox Code Playgroud)

日志结果是一些属性(具体来说:$ __,isNew,error,_maxListeners,_doc,_pres,_posts,save,_events)并且不包括我想要的任何道具.

我的问题是,我怎么能只迭代道具1,2和3,排除这些,我不知道,内置属性和我在参数中明确排除的属性?(ps:我在想一个不需要将我的对象转换成数组的解决方案,如果可能的话)

此外,这不是一个问题,但出于好奇,这些属性来自哪里?为什么它们出现在for循环中而不是在我记录对象时?为什么我排除的属性('-name')也出现在for循环中?如果它没有识别刚刚记录的属性,那么它是什么hasOwnProperty?

感谢您的时间和帮助!再见!

javascript properties mongoose node.js

8
推荐指数
2
解决办法
1万
查看次数

mongodb 中 db.collection.find() 的返回类型是什么

我正在尝试从 mongodb 连接读取 find 函数的输出。

我想将数据库的结果存储到名为 result 的 JSON/Array 中,例如:

collection= db.collection('users');
result =collection.find().
Run Code Online (Sandbox Code Playgroud)

现在有了这个代码,我得到了一些奇怪的长 json 输出:

{ db: 
{ domain: null,
 _events: {},
 _maxListeners: 10,
 databaseName: 'askr',
 serverConfig: 
  { domain: null,
    _events: [Object],
    _maxListeners: 10,
    auth: [Getter],
    _callBackStore: [Object],
    _commandsStore: [Object],
    _dbStore: [Object],
    options: [Object],
    _serverState: 'connected',
    _haProcess: [Object],
    servers: [Object],
    strategyInstance: [Object],
    emitOpen: false,
    _state: [Object],
    _currentServerChoice: 0,
    socketTimeoutMS: [Getter/Setter],
    _used: true,
    logger: [Object] },
 options: 
  { read_preference_tags: null,
    read_preference: 'primary',
    url: 'mongodb://vishal:admin@ds055680.mongolab.com:55680/askr',
    native_parser: true,
    readPreference: [Object],
    safe: …
Run Code Online (Sandbox Code Playgroud)

javascript mongodb node.js

8
推荐指数
2
解决办法
1万
查看次数

Model.findOne不返回文档但返回包装器对象

我已经使用像这样的猫鼬定义了一个模型:

var mongoose = require("mongoose")
var Schema = mongoose.Schema

var userObject = Object.create({
    alias: String,
    email: String,
    password: String,
    updated: { 
        type: Date,
        default: Date.now
    }
})

var userSchema = new Schema(userObject, {strict: false})
var User = mongoose.model('User', userSchema)

module.exports = User
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个用户,我可以通过mongo控制台完美找到这样的:

db.users.findOne({ email: "coco@coco.com" });
{
    "_id" : ObjectId("55e97420d82ebdea3497afc7"),
    "password" : "caff3a46ebe640e5b4175a26f11105bf7e18be76",
    "gravatar" : "a4bfba4352aeadf620acb1468337fa49",
    "email" : "coco@coco.com",
    "alias" : "coco",
    "updated" : ISODate("2015-09-04T10:36:16.059Z"),
    "apps" : [ ],
    "__v" : 0
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试通过带有mongoose的node.js访问此对象时,检索的对象不是这样的doc,而是包装器:

这段代码......

// Find the user …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb nodes node.js

6
推荐指数
1
解决办法
4253
查看次数