首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mon神明:在客户_id中插入条目(monk/node.js)

Mon神明:在客户_id中插入条目(monk/node.js)
EN

Stack Overflow用户
提问于 2016-07-11 16:39:59
回答 1查看 1K关注 0票数 0

我读过,除了数组之外,任何_id类型都可以使用。(但似乎找不到。你们能确认一下吗?)

出于性能原因,我希望用户名(字符串)成为_id

在Node.js中:

代码语言:javascript
复制
const monk = require('monk');
const db = monk('localhost:27017/test',
    function(err) {
        if(err)
            console.log(err.toString());
    });
//const doc = {user: 'aa', password: 'password'};
//const doc = {_id: 'aa', password: 'password'};
const doc = {_id: monk.id('aa'), password: 'password'};
var users = db.get('users');
users.insert([doc]);

第一个注释行工作,但其他行都出错了:

  • 立即退出_id: monk.id('aa')错误
  • _id: 'aa'在执行users.insert()时出错,因为我猜它试图将字符串转换为Id

这个错误是相同的,不管是:

代码语言:javascript
复制
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters

如何为_id使用给定的字符串

ps:要运行此代码,需要运行mongo、mongod --dbpath data和nodejs:npm install monk; nodejs

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-11 17:22:48

monk.id(ARG)会将ARG转换为ObjectId (文档),这不是您想要的。

相反,只需直接传递字符串:

代码语言:javascript
复制
const doc = { _id: 'aa', password: 'password' };

由于Monk还会自动将id强制转换为ObjectId,所以您必须禁用自动转换:

代码语言:javascript
复制
const db   = monk('localhost:27017/test', ...);
db.options = { 
  safe    : true,
  castIds : false
};
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38312026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档