Mongoose字符串到ObjectID

我有ObjectId的字符串。

var comments = new Schema({
    user_id:  { type: Schema.Types.ObjectId, ref: 'users',required: [true,'No user id found']},
    post: { type: Schema.Types.ObjectId, ref: 'posts',required: [true,'No post id found']}....

export let commentsModel: mongoose.Model<any> = mongoose.model("comments", comments);

我如何使用它:

let comment = new commentsModel;
str = 'Here my ObjectId code' //
comment.user_id = str;
comment.post = str;
comment.save();

当我创建一个“评论”模型,并分配一个字符串user_id值或发布时,我保存时出现错误。 我使console.log(comment)所有数据都分配给变量。

我尝试:

 var str = '578df3efb618f5141202a196';
    mongoose.mongo.BSONPure.ObjectID.fromHexString(str);//1
    mongoose.mongo.Schema.ObjectId(str);//2
    mongoose.Types.ObjectId(str);//3
  • TypeError:对象函数ObjectID(id){
  • TypeError:无法调用未定义的方法'ObjectId'
  • TypeError:无法读取未定义的属性'ObjectId'
  • 当然,我还包括猫头鹰之前的所有电话

    import * as mongoose from 'mongoose';
    

    没有用。


    你想使用默认的导出:

    import mongoose from 'mongoose';
    

    之后, mongoose.Types.ObjectId将工作:

    import mongoose from 'mongoose';
    console.log( mongoose.Types.ObjectId('578df3efb618f5141202a196') );
    

    编辑:完整的例子(用mongoose@4.5.5测试):

    import mongoose from 'mongoose';
    
    mongoose.connect('mongodb://localhost/test');
    
    const Schema = mongoose.Schema;
    
    var comments = new Schema({
        user_id:  { type: Schema.Types.ObjectId, ref: 'users',required: [true,'No user id found']},
        post: { type: Schema.Types.ObjectId, ref: 'posts',required: [true,'No post id found']}
    });
    
    const commentsModel = mongoose.model("comments", comments);
    
    let comment = new commentsModel;
    let str = '578df3efb618f5141202a196';
    comment.user_id = str;
    comment.post = str;
    comment.save().then(() => console.log('saved'))
                  .catch(e => console.log('Error', e));
    

    数据库显示这个:

    mb:test$ db.comments.find().pretty()
    {
        "_id" : ObjectId("578e5cbd5b080fbfb7bed3d0"),
        "post" : ObjectId("578df3efb618f5141202a196"),
        "user_id" : ObjectId("578df3efb618f5141202a196"),
        "__v" : 0
    }
    

    用这个

     var mongoose = require('mongoose');
     var str = '578df3efb618f5141202a196';
     var monmgoObjectId = mongoose.Types.ObjectId(str);
    
    链接地址: http://www.djcxy.com/p/89563.html

    上一篇: Mongoose String to ObjectID

    下一篇: instance of mongoose.model does not have a find method