相关疑难解决方法(0)

传入的参数必须是12个字节的单个字符串

mongoDB集合包含以下数据

db.stack.find()
{ "_id" : "8GieRu" }
Run Code Online (Sandbox Code Playgroud)

_id不是12字节的单个字符串,

根据[ObjectID] [1]的MongoDB文档,id(字符串) - 可以是24字节的十六进制字符串,12字节的二进制字符串或数字.

使用Mongoose,可以使用此Json访问此集合

{"_id" : new mongoose.Types.ObjectId("8GieRu")}
Run Code Online (Sandbox Code Playgroud)

并抛出以下错误

/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js:35
    throw new Error("Argument passed in must be a single String of 12 bytes or
          ^
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
    at new ObjectID (/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js:35:11)

  [1]: http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html
Run Code Online (Sandbox Code Playgroud)

Mongoose严格检查固定长度的ObjectId,如何使用给定长度的mongoose传递Object_id

mongoose mongodb node.js

11
推荐指数
2
解决办法
3万
查看次数

Node.js + MongoDB查询与"$或"对象无法正常工作

我正在尝试为用户创建一条路线,以便能够检查其他用户的个人资料.但是,我希望通过2个不同的网址加入这些配置文件/profile/nickname,/profile/id以便可以使用用户的昵称或用户ID来接收配置文件.我尝试了以下代码:

app.get("/profile/:id", function(req, res) {

User.findOne( { $or : [{ "nickname": req.params.id },{ "_id": req.params.id }] }, function(err, user) {
    if(user)
    {
        res.render('users/profile.jade', {
        locals: { 
            currentUser: user, 
            title: user.nickname +"'s Profile",
            jsf:[],
        }
        });
    }
    else
    {
        res.render('404.jade', { 
            status: 404,
            title: 'Page Not Found', 
                jsf: []  
        });
    }
});
});
Run Code Online (Sandbox Code Playgroud)

问题是,它似乎只是使用id而不是昵称,这意味着/profile/4f4ae474546708b219000005如果我访问的东西工作,但如果我访问/profile/mmellad哪个是该用户的给定昵称,我得到404页面.

还有一件事我觉得它对昵称很好用,它改变了查询

User.findOne( { $or : [{ "nickname": req.params.id },{ "_id": req.params.id }] }
Run Code Online (Sandbox Code Playgroud)

User.findOne( { "nickname": req.params.id } …
Run Code Online (Sandbox Code Playgroud)

routes mongodb node.js express

5
推荐指数
1
解决办法
4296
查看次数

标签 统计

mongodb ×2

node.js ×2

express ×1

mongoose ×1

routes ×1