我已经读过除了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
。
答案 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)
投放到ARG
(documentation),这不是您想要的。
相反,只需直接传递字符串:
ObjectId
由于Monk还自动将id转换为const doc = { _id: 'aa', password: 'password' };
,因此您必须禁用自动播放:
ObjectId