Mongod:使用客户_id插入条目(monk / node.js)

时间:2016-07-11 16:39:59

标签: node.js mongodb monk

我已经读过除了Array之外可以使用任何_id类型。 (但似乎无法找到。你们可以确认一下吗?)

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

在Node.js中:

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

无论如何错误都是相同的:

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

1 个答案:

答案 0 :(得分:5)

function postData(arr, index){ let itemToPost = arr[index]; fetch('https://xyz/some/url', { method: 'post' content: json.stringify(itemToPost)// something like this }).then(function(response) { //success //recursive call here postData(arr, ++index) }).catch(function(err) { // Error :( }); } 会将monk.id(ARG)投放到ARGdocumentation),这不是您想要的。

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

ObjectId

由于Monk还自动将id转换为const doc = { _id: 'aa', password: 'password' }; ,因此您必须禁用自动播放:

ObjectId