Mongoose String to ObjectID

i have string with 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);

How i user it:

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

When I create a "comment" model and assign a string user_id value or post I have an error when saving. I make console.log(comment) all data is assigned to vars.

I try:

 var str = '578df3efb618f5141202a196';
    mongoose.mongo.BSONPure.ObjectID.fromHexString(str);//1
    mongoose.mongo.Schema.ObjectId(str);//2
    mongoose.Types.ObjectId(str);//3
  • TypeError: Object function ObjectID(id) {
  • TypeError: Cannot call method 'ObjectId' of undefined
  • TypeError: Cannot read property 'ObjectId' of undefined
  • And of course I included the mongoose BEFORE ALL CALLS

    import * as mongoose from 'mongoose';
    

    nothing works.


    You want to use the default export:

    import mongoose from 'mongoose';
    

    After that, mongoose.Types.ObjectId will work:

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

    EDIT: full example (tested with 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));
    

    Database shows this:

    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/89564.html

    上一篇: 为什么我在我的应用程序中使用猫鼬时无法检索到任何结果

    下一篇: Mongoose字符串到ObjectID