我有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();

当我创建一个" comments "模型并分配一个字符串user_id值或post时,我在保存时出错.我把所有数据都分配给VAR.

我试着:

 var str = '578df3efb618f5141202a196';
    mongoose.mongo.BSONPure.ObjectID.fromHexString(str);//1
    mongoose.mongo.Schema.ObjectId(str);//2
    mongoose.Types.ObjectId(str);//3
  1. 类型错误:对象函数ObjectID(id){
  2. TypeError:无法调用未定义的方法"ObjectId"
  3. TypeError:无法读取未定义的属性"ObjectId"

当然,我还包括mongoose BEFORE ALL CALLS

import * as mongoose from 'mongoose';

什么都不管用.

推荐答案

要使用默认导出:

import mongoose from 'mongoose';

在那之后,mongoose.Types.ObjectId个将起作用:

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

EDIT:个完整示例(用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
}

Mongodb相关问答推荐

如何通过 Go 以 UUID 类型保存 Mongo 中的内容?

如何在 MongoDB 中的集合下查找同一文档

如何在 mongodb 查找的外键中使用正则表达式

MongoDB 聚合 $match 阶段与条件查询

将数据从一个集合插入另一个集合的聚合

对 MongoDB 集合中的对象数组进行排序

为什么使用整数作为 pymongo 的键不起作用?

如何使用 mongoose 从 MongoDb 获取数据?

MongoDB 使用自定义表达式或函数进行排序

MongoDB获取聚合查询的executionStats

如何在 MongoDb 中使用杰克逊将日期字段存储为 ISODate()

如何使用 mongodb 和 php 正确处理分页查询?

MongoDB聚合排序不起作用

Golang + MongoDB 嵌入类型(将一个 struct 嵌入到另一个 struct 中)

为什么使用 Redis 而不是 MongoDb 进行缓存?

MongoDb 数据库与集合

使用 Mongoose ORM 的杀手锏是什么?

在 NodeJs 中处理 Mongodb 全局连接的最佳方法是什么

如何使用 Spring 的 MongoTemplate 和 Query 类检索字段子集?

创建模型时出现mongoose错误